
专注于保护高度敏感数据,temcrypt 是一种先进的多层数据进化加密机制,提供随时间可扩展的复杂性,并能抵抗常见的暴力攻击。
你可以在部署时创建自己的应用程序、脚本和自动化任务。
了解 temcrypt 的含义、功能以及启发我创建它的灵感等内容。阅读知识文档。这对你非常重要。
temcrypt 兼容 Node.js v18 及以上版本,以及现代网页浏览器,使你可以在各种环境中使用它。
temcrypt 仅依赖 crypto-js 来处理加密算法,如 AES-256、SHA-256 和一些编码器,以及用于 Node.js 文件处理的 fs。
要使用 temcrypt,你需要安装 Node.js。然后,你可以使用 npm 安装 temcrypt:
npm install temcrypt
之后,按如下方式在你的代码中导入:
const temcrypt = require("temcrypt");
包括一个用于其依赖项的自动安装功能,因此你无需担心手动安装它们。只需运行 temcrypt.js 库,依赖项将自动安装,然后在你的代码中调用它,这样做是为了便于移植:
node temcrypt.js
或者,你也可以通过包含以下脚本标签在浏览器中直接使用 temcrypt:
<script src="temcrypt.js"></script>
或压缩版本:
<script src="temcrypt.min.js"></script>
你还可以从 CDN 在你的网站或 Web 应用程序中调用该库:
<script src="https://cdn.jsdelivr.net/gh/jofpin/temcrypt/temcrypt.min.js"></script>
temcrypt 提供了 encrypt 和 decrypt 等函数,用于安全地保护和披露你的信息。
参数
dataString (string): 要加密的字符串数据。dataFiles (string): 要加密的文件路径。提供 dataString 或 dataFiles 之一。mainKey (string): 用于加密的主密钥(私有)。extraBytes (number, optional): 要添加到加密中的额外字节。这是 temcrypt 加密过程中的可选参数。它允许你向加密数据添加额外字节,从而增加加密的复杂性,需要更多处理能力来解密。它还可以通过改变加密权重来使模式丢失。返回值
status (boolean): true 表示解密成功。hash (string): 为验证加密数据合法性而生成的唯一哈希值。dataString (string) 或 dataFiles: 根据输入,为解密后的字符串或解密文件的文件路径。updatedEncryptedData (string): 解密后的更新加密数据。每次解密加密数据时,输出都会更新,因为 mainKey 的顺序会改变,并且会保存新的最后解密日期。creationDate (string): 加密数据的创建日期。lastDecryptionDate (string): 数据最后一次成功解密的日期。dataString:
hash (string): 为验证加密数据合法性而生成的唯一哈希值。mainKey (string): 用于加密的主密钥(私有)。timeKey (): 加密的时间密钥(私有)。以下是一些如何使用 temcrypt 的示例。请注意,加密时,你必须输入一个密钥,并保存加密信息的小时和分钟。要解密信息,你必须在后续几天的相同小时和分钟使用相同的主密钥:
const dataToEncrypt = "Sensitive data";
const mainKey = "your_secret_key"; // Insert your custom key
const encryptedData = temcrypt.encrypt({
dataString: dataToEncrypt,
mainKey: mainKey
});
console.log(encryptedData);
const encryptedData = "..."; // Encrypted data obtained from the encryption process
const mainKey = "your_secret_key";
const decryptedData = temcrypt.decrypt({
dataString: encryptedData,
mainKey: mainKey
});
console.log(decryptedData);
加密文件:
要使用 temcrypt 加密文件,你可以使用带 dataFiles 参数的 encrypt 函数。以下是如何加密文件并获取加密结果的示例:
const temcrypt = require("temcrypt");
const filePath = "path/test.txt";
const mainKey = "your_secret_key";
const result = temcrypt.encrypt({
dataFiles: filePath,
mainKey: mainKey,
extraBytes: 128 // Optional: Add 128 extra bytes
});
console.log(result);
在此示例中,将 'test.txt' 替换为你要加密的文件的实际路径,并将 'your_secret_key' 设置为主密钥。result 对象将包含加密详情,包括唯一哈希、主密钥、时间密钥以及加密文件的文件路径。
解密文件:
要解密之前使用 temcrypt 加密的文件,你可以使用带 dataFiles 参数的 decrypt 函数。以下是如何解密文件并获取解密结果的示例:
const temcrypt = require("temcrypt");
const filePath = "path/test.txt.trypt";
const mainKey = "your_secret_key";
const result = temcrypt.decrypt({
dataFiles: filePath,
mainKey: mainKey
});
console.log(result);
在此示例中,将 'path/test.txt.trypt' 替换为加密文件的实际路径,并将 'your_secret_key' 设置为主密钥进行解密。result 对象将包含解密状态和解密后的数据(如果成功)。
请记住,要成功解密文件,必须在与加密时完全相同的小时和分钟提供加密中使用的主密钥。如果主密钥错误、文件被篡改或时间不对,解密状态将为 false,且无法获取解密数据。
temcrypt 提供了 utils 函数,用于执行加密和解密之外的其他操作。这些实用函数旨在增强功能性和可用性。
函数列表:
下面,你可以看到详情以及如何实现其用途。
更新主密钥:
changeKey 实用函数允许你在保持加密数据不变的情况下更改用于加密数据的主密钥。当你想要增强加密数据的安全性或定期更新主密钥时,这非常有用。
dataFiles (可选): 使用 temcrypt 加密的文件的路径。dataString (可选): 使用 temcrypt 生成的加密字符串。mainKey (string): 当前用于加密数据的主密钥。newKey (string): 将替换当前主密钥的新主密钥。const temcrypt = require("temcrypt");
const filePath = "test.txt.trypt";
const currentMainKey = "my_recent_secret_key";
const newMainKey = "new_recent_secret_key";
// Update mainKey for the encrypted file
const result = temcrypt.utils({
changeKey: {
dataFiles: filePath,
mainKey: currentMainKey,
newKey: newMainKey
}
});
console.log(result.message);
检查数据完整性:
check 实用函数允许你验证使用 temcrypt 加密的数据的完整性。它检查文件或字符串是否为有效的 temcrypt 加密数据。
dataFiles (可选): 要检查的文件的路径。dataString (可选): 要检查的加密字符串。const temcrypt = require("temcrypt");
const filePath = "test.txt.trypt";
const encryptedString = "..."; // Encrypted string generated by temcrypt
// Check the integrity of the encrypted File
const result = temcrypt.utils({
check: {
dataFiles: filePath
}
});
console.log(result.message);
// Check the integrity of the encrypted String
const result2 = temcrypt.utils({
check: {
dataString: encryptedString
}
});
console.log(result2.message);
验证哈希:
verify 实用函数允许你使用哈希值验证加密数据的完整性。检查加密数据输出是否与提供的哈希值匹配。
hash (string): 要验证的哈希值。dataFiles (可选): 要验证其哈希的文件的路径。dataString (可选): 要验证其哈希的加密字符串。const temcrypt = require("temcrypt");
const filePath = "test.txt.trypt";
const hashToVerify = "..."; // The hash value to verify
// Verify the hash of the encrypted File
const result = temcrypt.utils({
verify: {
hash: hashToVerify,
dataFiles: filePath
}
});
console.log(result.message);
// Verify the hash of the encrypted String
const result2 = temcrypt.utils({
verify: {
hash: hashToVerify,
dataString: encryptedString
}
});
console.log(result2.message);
下表列出了 temcrypt 用于指示各种错误场景的重要错误代码及其对应的错误消息。
| 代码 |
|---|
查看 examples 目录以获取更详细的使用示例。
⚠️ 建议
字符串或文件的加密大小应小于 16 KB(千字节)。如果更大,你必须拥有足够的计算能力才能解密。否则,你的个人计算机将超出找到正确主密钥组合和正确加密形成所需的时间,并且无法解密信息。
ℹ️ 提示
- 使用 temcrypt,你只能在后续几天使用与加密时相同的小时和分钟输入的密钥解密你的信息。
- 关注时间,建议在最初的 2 到 10 秒内开始解密,这样你就有优势生成正确的密钥形成。
本项目的内容本身采用 Creative Commons Attribution 3.0 许可证,用于格式化和显示该内容的底层源代码采用 MIT 许可证。
Copyright (c) 2023 by Jose Pino
dataString (string): 加密后的字符串。extraBytes (number, optional): 用于加密的额外字节。dataFiles:
hash (string): 为验证加密数据合法性而生成的唯一哈希值。mainKey (string): 用于加密的主密钥。timeKey (string): 加密的时间密钥。dataFiles (string): 加密文件的文件路径。extraBytes (number, optional): 用于加密的额外字节。status (boolean): false 表示解密失败。error_code (number): 指示解密失败原因的错误代码。message (string): 描述解密失败的说明性错误消息。| 错误消息 |
|---|
| 描述 |
|---|
| 420 | 解密超时 | 解密过程超过允许的时间限制。 |
| 444 | 解密失败 | 解密过程遇到错误。 |
| 777 | 未提供数据 | 未为操作提供数据。 |
| 859 | 无效的 temcrypt 加密字符串 | 提供的字符串不是有效的 temcrypt 加密字符串。 |