@sskmy1024y/react-native-hash
Version:
A hashing library for react-native
66 lines (56 loc) • 1.46 kB
JavaScript
/* eslint linebreak-style: ["error", "windows"] */
/* eslint-disable no-use-before-define */
import WordArray from './WordArray.js';
/**
* Latin1 encoding strategy.
*/
const Latin1 = {
/**
* Converts a word array to a Latin1 string.
*
* @param {WordArray} wordArray The word array.
*
* @return {string} The Latin1 string.
*
* @static
*
* @example
*
* var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
*/
stringify(wordArray) {
// Shortcuts
const { words, sigBytes } = wordArray;
// Convert
const latin1Chars = [];
for (let i = 0; i < sigBytes; i += 1) {
const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
latin1Chars.push(String.fromCharCode(bite));
}
return latin1Chars.join('');
},
/**
* Converts a Latin1 string to a word array.
*
* @param {string} latin1Str The Latin1 string.
*
* @return {WordArray} The word array.
*
* @static
*
* @example
*
* var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
*/
parse(latin1Str) {
// Shortcut
const latin1StrLength = latin1Str.length;
// Convert
const words = [];
for (let i = 0; i < latin1StrLength; i += 1) {
words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
}
return new WordArray(words, latin1StrLength);
},
};
export default Latin1;