簡體   English   中英

如何在Javascript中使用DES算法加密字符串?

[英]How can I encrypt string with DES algorithm in Javascript?

我有以下使用openssl加密字符串的shell腳本:

encrypt() {
STRING_TO_BE_ENCRYPTED=$1
DATE_STRING=$2

MD5=$(/bin/echo -n ${DATE_STRING} | openssl md5)
MD5=${MD5#*=\ }

key=${MD5:0:8}
iv=${MD5:24:8}

key=$(/bin/echo -n "${key}" |od -A n -t x1|sed s/\ //g)
iv=$(/bin/echo -n "${iv}" |od -A n -t x1|sed s/\ //g)

/bin/echo -n "${STRING_TO_BE_ENCRYPTED}" | openssl des -e -nosalt -K ${key} -iv ${iv} -a
}

我正在嘗試在javascript中使用相同的功能(以便在郵遞員中使用)。 目前,我有以下代碼:

var DATE_STRING = "Tue, 6 Mar 2018 11:47:23 EET";
var STRING_TO_BE_ENCRYPTED = "somestring";

//MD5=$(/bin/echo -n ${DATE_STRING} | openssl md5)
//MD5=${MD5#*=\ }
var MD5 = CryptoJS.MD5(DATE_STRING).toString();

//key=${MD5:0:8}
var key=MD5.substring(0, 8);
//iv=${MD5:24:8}
var iv=MD5.substring(MD5.length - 8);

//key=$(/bin/echo -n "${key}" |od -A n -t x1|sed s/\ //g)
var keyHex = toHex(key);
//iv=$(/bin/echo -n "${iv}" |od -A n -t x1|sed s/\ //g)
var ivHex = toHex(iv);
And the only issue that I have is the last string from my shell script:

// /bin/echo -n "${STRING_TO_BE_ENCRYPTED}" | openssl des -e -nosalt -K ${key} -iv ${iv} -a

我完全堅持使用“ des”進行加密。 可以幫我將最后一個字符串轉換為javascript嗎?

好的,所以我的代碼玩得更多了,現在我可以使用它了:

var DATE_STRING = "Tue, 6 Mar 2018 11:47:23 EET";
var str="somestring";
var MD5 = CryptoJS.MD5(DATE_STRING).toString();

var key=MD5.substring(0, 8);
var iv=MD5.substring(MD5.length - 8);    

var keyHex = CryptoJS.enc.Utf8.parse(key);
var ivHex = CryptoJS.enc.Hex.parse(CryptoJS.enc.Utf8.parse(iv).toString(CryptoJS.enc.Hex));

var encrypted = CryptoJS.DES.encrypt(str, keyHex, { iv: ivHex, mode: CryptoJS.mode.CBC });
var result = encrypted.toString();

因此,此代碼產生的結果與使用openssl的Shell腳本產生的結果相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM