說明:JS简单的加密解密方法
字符串加密
方法
-
- /**
- * encrypto 加密程序
- * @param {Strng} str 待加密字符串
- * @param {Number} xor 异或值
- * @param {Number} hex 加密后的进制数
- * @return {Strng} 加密后的字符串
- */
- function encrypto( str, xor, hex ) {
- if ( typeof str !== 'string' || typeof xor !== 'number' || typeof hex !== 'number') {
- return;
- }
-
- let resultList = [];
- hex = hex <= 25 ? hex : hex % 25;
-
- for ( let i=0; i < str.length; i++ ) {
- // 提取字符串每个字符的ascll码
- let charCode = str.charCodeAt(i);
- // 进行异或加密
- charCode = (charCode * 1) ^ xor;
- // 异或加密后的字符转成 hex 位数的字符串
- charCode = charCode.toString(hex);
- resultList.push(charCode);
- }
- let splitStr = String.fromCharCode(hex + 97);
- let resultStr = resultList.join( splitStr );
- return resultStr;
- }
-
字符串解密
方法
-
- /**
- * decrypto 解密程序
- * @param {Strng} str 待加密字符串
- * @param {Number} xor 异或值
- * @param {Number} hex 加密后的进制数
- * @return {Strng} 加密后的字符串
- */
- function decrypto( str, xor, hex ) {
- if ( typeof str !== 'string' || typeof xor !== 'number' || typeof hex !== 'number') {
- return;
- }
- let strCharList = [];
- let resultList = [];
- hex = hex <= 25 ? hex : hex % 25;
- // 解析出分割字符
- let splitStr = String.fromCharCode(hex + 97);
- // 分割出加密字符串的加密后的每个字符
- strCharList = str.split(splitStr);
-
- for ( let i=0; i < strCharList.length; i++ ) {
- // 将加密后的每个字符转成加密后的ascll码
- let charCode = parseInt(strCharList[i], hex);
- // 异或解密出原字符的ascll码
- charCode = (charCode * 1) ^ xor;
- let strChar = String.fromCharCode(charCode);
- resultList.push(strChar);
- }
- let resultStr = resultList.join('');
- return resultStr;
- }
-
測試
方法
-
- let s1 = 'hello world';
-
- // 加密
- s1 = encrypto(s1, 123, 25);
- console.log('s1=', s1);
- // s1= jz15znznzkz3gzczkz9znz16
-
- // 解密
- let s2 = decrypto(s1, 123, 25);
- console.log('s2=', s2);
- // s2= hello world
C#的解密方式
"ToInt32的基底,必須是 2、8、10 或 16"
方法
-
- private string decrypto(string str)
- {
- string [] strCharList;
- List resultList=new List();
-
- // 解析出分割字符
- char splitStr = (char)(16 + 97);
- // 分割出加密字符串的加密後的每個字符
- strCharList = str.Split(splitStr);
- for (int i = 0; i < strCharList.Length; i++)
- {
- // 將加密後的每個字符轉成加密後的ascll碼
- int charCode = Convert.ToInt32(strCharList[i],16);
- // 異或解密出原字符的ascll碼
- charCode = (charCode * 1) ^ 123;
- char strChar = (char)(charCode);
- resultList.Add(strChar);
- }
- string resultStr = string.Join("", resultList);
- return resultStr;
- }