나는 (당신은 복사하여 실행 https://dotnetfiddle.net/에 붙여 넣을 수 있습니다) 3DES ECB 를 사용하여 텍스트를 암호화하는 C# 코드를 변환하기 위해 노력하고있어NodeJS 3DES ECB 암호화하지 않습니다 동일한 C# 암호화
using System;
using System.Configuration;
using System.Security.Cryptography;
using System.Text;
public class Program
{
public static void Main()
{
string toEncrypt = "testtext";
string key = "testkey";
bool useHashing = true;
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
System.Configuration.AppSettingsReader settingsReader =
new AppSettingsReader();
key = string.IsNullOrEmpty(key) ? (string)settingsReader.GetValue("SecurityKey", typeof(String)) : key;
if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
hashmd5.Clear();
}
else
{
keyArray = UTF8Encoding.UTF8.GetBytes(key);
}
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
key = Convert.ToBase64String(keyArray, 0, keyArray.Length);
Console.WriteLine(key);
tdes.Key = keyArray;
tdes.Mode = CipherMode.ECB;
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
tdes.Clear();
Console.Write(Convert.ToBase64String(resultArray, 0, resultArray.Length));
}
}
출력 :
Ihs2jX9fWXhn9SWXHyj/dQ== <- md5 secret key
wHL9J7vhm9LZI2W5DQJGKw== <- encrypt result
그래서 나는 암호 사용 NodeJS에서 위의 코드를 다시 작성
const crypto = require('crypto');
const md5 = text => {
return crypto
.createHash('md5')
.update(text)
.digest('base64');
}
const encrypt = (text, secretKey) => {
secretKey = md5(secretKey);
console.log(secretKey);
const cipher = crypto.createCipher('des-ede3', secretKey);
const encrypted = cipher.update(text, 'utf8', 'base64');
return encrypted + cipher.final('base64');
};
const encrypted = encrypt('testtext', 'testkey');
console.log(encrypted);
출력 :
Ihs2jX9fWXhn9SWXHyj/dQ== <- md5 secret key
VNa9fDYgPus5IMhUZRI+jQ== <- encrypt result
나는 문제가 3DES의 ECB를 사용하여 C# 및 NodeJS 암호화 방식에있다 생각합니다. NodeJS에서의 C# 코드 동작을 어떻게 재현 할 수 있습니까?
* 작업 *을 완료 할 수 있었지만 실제로이 질문에 * 답변 * 답장합니까? – AakashM
@AakashM 그래, 그렇지만 게시일로부터 2 일 이내에 내 답변을 수락 할 수 없습니다. 질문은 "C# 코드를 NodeJS로 변환하는"대신 "NodeJS에서 C#의 동작을 복제하는 방법"이라고 생각합니다. 질문을 업데이트하겠습니다. –