uQlYYov + XlVEHL0JBpvt15FeJxt + fXgjs9KLJHH5X * * * * * 8 * * * * 5 * * * * 5 * * * * 5 * * 5 * * 5x5 * 0x6x5X6X51019 *
U2FsdGVkX19 / IR4A9cm + duXf3vhnmnuyJtXFVWJi / Ptqib7g5gOANppYXh + mTQ8tcenO58a5FxnFVxRq1PUETA ==
10 * * * * * * **
var encrypted = CryptoJS.TripleDES.encrypt("www.society.com|1084470043000|memberaccess" , "92f2f81930b5afb056630afb02f2f8b1", {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
Я понимаю, что я указываю PKCS # 7 вместо PKCS # 5, но я не нашел библиотеку для PKCS # 5.
Мой вопрос заключается в том, можно ли удовлетворить их требования с помощью CryptoJS, и если нет, то есть ли какие-либо другие решения javascript?
Моя скрипка
https://jsfiddle.net/dwc6zb89/2/
Я не трачу достаточно времени на криптографию, чтобы дать вам хороший ответ о том, является ли он base64 или нет.Я верю в это, потому что у меня есть блок кода на C #, который я написал и который дает почти правильный результат.Это несколько символов.Я продолжаю сравнивать эти два, чтобы увидеть, что делает мой код на c #, а не javascript.
public static string Encrypt(string toEncrypt, bool useHashing)
{
var key = "92f2f81930b5afb056630afb02f2f8b1";
var iso8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");
var keyArray = Convert.FromBase64String(iso8859_1.GetString(iso8859_1.GetBytes(key)));
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
if (useHashing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
//Always release the resources and flush data
// of the Cryptographic service provide. Best Practice
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes(key);
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
//set the secret key for the tripleDES algorithm
tdes.Key = keyArray;
//mode of operation. there are other 4 modes.
//We choose ECB(Electronic code Book)
tdes.Mode = CipherMode.ECB;
//padding mode(if any extra byte added)
tdes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tdes.CreateEncryptor();
//transform the specified region of bytes array to resultArray
byte[] resultArray =
cTransform.TransformFinalBlock(toEncryptArray, 0,
toEncryptArray.Length);
//Release resources held by TripleDes Encryptor
tdes.Clear();
//Return the encrypted data into unreadable string format
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
Обновление:
Я чувствую, что я безумно близок.Путем преобразования моего ключа с использованием следующего
var encryptedKey = CryptoJS.enc.Base64.parse(key);
я могу сгенерировать зашифрованное значение, которое находится всего в нескольких символах от образца, предоставленного мне продавцом.Это моя текущая скрипка.
https://jsfiddle.net/uv8z2mrc/1/
Обновление:
У меня было две проблемы.
Мне нужно было основать64 зашифруйте мой ключ перед его использованием следующим образом.
var encryptedKey = CryptoJS.enc.Base64.parse (key);
Документация поставщика неверна, и значениедля шифрования предполагалось использовать адрес .org вместо .com.GRRR!