ECB encryption
by Estevez Ben Lajamin
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/pad-pkcs7.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/pad-nopadding.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/pad-zeropadding.js"></script>
JavaScript
var x = encryptCardNumber('0040586500', '1234567890ABCDEF');
alert(x);
function encryptCardNumber(card_number, key) {
//Generate 22 characters random characters
var randomizeLocale = moment.tz.names()[Math.floor(Math.random() * (moment.tz.names()).length)];
moment.tz(randomizeLocale);
//ran1 = 10 characters, ran2 = 10 characters, ran3 = 2 characters
var ran1 = moment().unix().toString().substring(0,10);
var ran2 = moment().unix().toString().substring(0,10);
var ran3 = moment().unix().toString().substring(0,2);
var ran_num = ran1 + ran3 + ran2;
//Combine the card number with the random number
var plain_text = ran_num.substring(0,3) +
card_number.substring(0,3) +
ran_num.substring(4,11) +
card_number.substring(4,8) +
ran_num.substring(12,13) +
card_number.substring(9,10) +
ran_num.substring(14,22);
/* alert(typeof plain_text);
return; */
/* alert(plain_text);
return; */
//Encrypt the combined plain text with the key (format: base64)
const cipher = CryptoJS.AES.encrypt('AA00040BB11CC2058652D00EF123GHJE', '1234567890ABCDEF', {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
iv: '',
});
alert(cipher);
// 将加密后的数据转换成 Base64
const base64Cipher = cipher.ciphertext.toString(CryptoJS.enc.Base64);
// 处理 Android 某些低版的BUG
const resultCipher = base64Cipher.replace(/\+/g,'-').replace(/\//g,'_');
// 返回加密后的经过处理的 Base64
return resultCipher;
}