如何从Ruby中的5字加密哈希中找到SHA1加密字符串

How to find a SHA1 encrypted string from the 5-word encrypted hash in Ruby?

本文关键字:加密 哈希中 SHA1 字符串 5字 Ruby 中的      更新时间:2023-09-26

假设您正在使用CryptoJS加密字符串"alextoul"。SHA1.

正如下面的来源所解释的,你会得到一个看起来像这样的对象:

CryptoJS。SHA1("alextoul")={words:{0:1025575641 1:-2026381578 2:1077518901 3:1028391820 4:1049226021}}

事实证明,如果你把它转换成一个字符串,你会得到:

CryptoJS。SHA1("alextoul")。ToString()="3d210ad98737def64039a2353d4c038c3e89eb25"

现在我要做的是从Ruby中的5个单词中找到上面的字符串("3d210ad98737def64039a2353d4c038c3e89eb25")。

thefunctionined(params[:words])#等于"3d210ad98737def64039a2353d4c038c3e89eb25"

来源:https://code.google.com/p/crypto-js/#The_Hasher_Output

只需阅读来源:

https://code.google.com/p/crypto-js/source/browse/tags/3.1.2/src/core.js#181-->

https://code.google.com/p/crypto-js/source/browse/tags/3.1.2/src/core.js#306-->

function stringify(wordArray) {
        // Shortcuts
        var words = wordArray.words;
        var sigBytes = wordArray.sigBytes;
        // Convert
        var hexChars = [];
        for (var i = 0; i < sigBytes; i++) {
            var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
            hexChars.push((bite >>> 4).toString(16));
            hexChars.push((bite & 0x0f).toString(16));
        }
        return hexChars.join('');
    }

然后呼叫

stringify(CryptoJS.SHA1("alextoul"))

对不起,我对ruby的了解不足以移植