JS前台base32加密,C#后台解码
2014-01-23 12:47
323 查看
JS 加密方法:
JS调用代码:
后台转码代码:
后台调用转码获取明文:
var getEncodeString = function(srcString) { //var srcString = 'abc'; var BASE32CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"; var i = 0; var index = 0; var digit = 0; var currByte; var nextByte; var retrunString = ''; for (var i = 0; i < srcString.length; ) { //var index = 0; currByte = (srcString.charCodeAt(i) >= 0) ? srcString.charCodeAt(i) : (srcString.charCodeAt(i) + 256); if (index > 3) { if ((i + 1) < srcString.length) { nextByte = (srcString.charCodeAt(i + 1) >= 0) ? srcString.charCodeAt(i + 1) : (srcString.charCodeAt(i + 1) + 256); } else { nextByte = 0; } digit = currByte & (0xFF >> index); index = (index + 5) % 8; digit <<= index; digit |= (nextByte >> (8 - index)); i++; } else { digit = (currByte >> (8 - (index + 5))) & 0x1F; index = (index + 5) % 8; if (index == 0) { i++; } } retrunString = retrunString + BASE32CHAR.charAt(digit); } return retrunString.toLowerCase(); }
JS调用代码:
var a=getEncodeString("abc")
后台转码代码:
/// <summary> /// BASE32解码 /// </summary> /// <param name="encodeString"></param> /// <returns></returns> private string getDecodeString(string encodeString) { int i; int index; int lookup; int offset; int digit; string en_string = encodeString.ToUpper(); int[] BASE32LOOOKUP = new int[]{ 0xFF, 0xFF, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, // '0', '1', '2', '3', '4', '5', '6', '7' 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // '8', '9', ':', ';', '<', '=', '>', '?' 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G' 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, // 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O' 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, // 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W' 0x17, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 'X', 'Y', 'Z', '[', '\', ']', '^', '_' 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g' 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, // 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o' 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, // 'p', 'q', 'r', 's', 't', 'u', 'v', 'w' 0x17, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF,0xFF }; int stringLen = ((en_string.Length * 5) / 8); int[] bytes = new int[stringLen]; for (var a = 0; a < stringLen; a++) { bytes[a] = 0; } for (i = 0, index = 0, offset = 0; i < en_string.Length; i++) { var charCode0 = (short)'0'; lookup = (short)en_string[i] - charCode0; if ((lookup < 0) || (lookup >= BASE32LOOOKUP.Length)) { continue; } digit = BASE32LOOOKUP[lookup]; if (digit == 0xFF) { continue; } if (index <= 3) { index = (index + 5) % 8; if (index == 0) { bytes[offset] = bytes[offset] | digit; offset++; if (offset >= bytes.Length) { break; } } else { bytes[offset] = bytes[offset] | (digit << (8 - index)); } } else { index = (index + 5) % 8; bytes[offset] = bytes[offset] | (digit >> index); offset++; if (offset >= bytes.Length) { break; } bytes[offset] = bytes[offset] | (digit << (8 - index)); if (bytes[offset] >= 256) { bytes[offset] %= 256; } } } string realkeyString = ""; for (var a = 0; a < bytes.Length; a++) { var realkey = (char)bytes[a]; realkeyString += realkey; } return realkeyString; }
后台调用转码获取明文:
string pwd=""; pwd=getDecodeString(txtPwd.Text.Trim());
相关文章推荐
- JS前台base32加密,C#后台解码
- RSA前台js加密,后台C#解密
- js前台加密传输到后台C#解密
- C#前台js调用后台代码
- asp.net中前台js变量与后台c#的相互调用方法
- C#后台调用前台js方法
- 前台JS调用后台C#方法
- c#后台调用前台与js方法互调
- 不用AJAX实现前台JS调用后台C#方法
- 前台js escape及后台C# Server.UrlEncode 对QueryString传参的含~!@#$%^&*等特殊字符的处理
- 前台js与后台C#互相调用 & JS于HTML交互
- C#后台调用前台页面js方法
- C#数组赋值给JS数组————后台CS数据赋值给前台JS数组
- ASP.NET 后台编码js前台解码
- 前台js与后台C#互相调用
- 【转】JS前台加密,java后台解密实现
- 如何在前台JS调用后台C#方法
- asp.net对cookie的操作(前台js和后台c#代码)
- c#后台调用前台与js方法互调
- 【引用】C#后台调用前台页面js方法: