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;
 
}