首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TripleDES:加密(.Net) -解密(CryptoJS)

TripleDES:加密(.Net) -解密(CryptoJS)
EN

Stack Overflow用户
提问于 2016-11-15 19:06:04
回答 1查看 1.1K关注 0票数 1

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

代码语言:javascript
复制
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);
}

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

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

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

代码语言: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"));

Update:我知道加密密码是个坏主意,Triple DES不是最好的算法,但是C#应用程序不能被修改(至少目前是这样),所以我不能更改密码的加密方式,我必须按当前的情况读取它们。

EN

回答 1

Stack Overflow用户

发布于 2016-11-17 12:12:50

(代表“任择议定书”张贴)。

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

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40617764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档