gpt4 book ai didi

c# - TripleDES : Encrypt (.Net) - 解密 (CryptoJS)

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:42 27 4
gpt4 key购买 nike

我有一个 C# 应用程序,它使用以下方法在数据库中加密和解密密码:

public static string Encrypt(string input, string key)
{
TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);
tripleDES.Mode = CipherMode.ECB;
tripleDES.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tripleDES.CreateEncryptor();

byte[] inputArray = UTF8Encoding.UTF8.GetBytes(input);

byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
tripleDES.Clear();

return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

public static string Decrypt(string input, string key)
{
byte[] inputArray = Convert.FromBase64String(input);

TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);
tripleDES.Mode = CipherMode.ECB;
tripleDES.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tripleDES.CreateDecryptor();

byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
tripleDES.Clear();

return UTF8Encoding.UTF8.GetString(resultArray);
}

因此,如果我使用 key 0123456789012345 加密密码 testing,那么结果将是 +dc6bsOFg00=

现在我必须从 NodeJS 应用程序(使用 CryptoJS)读取这些密码,但我不知道该怎么做,因为在 C# 中,加密是面向字节(请注意,在代码中 inputkey 都转换为 byte[]),而在 CryptoJS 中,它更面向字符串

我尝试使用此 JavaScript 函数,但没有成功:

var CryptoJS = require("crypto-js");

function decrypt(input, key) {
var inputArray = new Buffer(input, 'base64');
var inputString = inputArray.toString();
var resultArray = CryptoJS.TripleDES.decrypt(inputString, key, {'mode': CryptoJS.mode.ECB, 'pad': CryptoJS.pad.Pkcs7});
return resultArray.toString();
}

console.log(decrypt("+dc6bsOFg00=", "0123456789012345"));

更新:我知道加密密码是一个坏主意,并且 Triple DES 不是最好的算法,但是 C# 应用程序无法修改(至少现在不能),所以我无法更改密码的加密方式,我必须按当前的方式读取它们。

最佳答案

(代表 OP 发布)

感谢您的建议,但使用 inputArray.toString('binary') 不起作用。

我最终解决我的问题的是使用 Edge.js :由于我有用于加密和解密的 C# 方法的代码,因此我可以使用 Edge.js 从 Node 应用程序执行这些方法。

关于c# - TripleDES : Encrypt (.Net) - 解密 (CryptoJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40617764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com