微信小
程序开发,具体
步骤实施加密:
在
工具的util.js
文件,
功能是16位的十进制加密后的字符串添加到字符串:
功能encodeutf8(s){
var I,R C,x = { };
为(i = 0;i < s.length;i++)
如果((C = s.charcodeat(I))< 0x80)r.push(C);
如果(C > 6 0x1F),0x80 +(C 0x3f));
{其他
如果((X = C ^ 0xd800)> > 10 = = 0) / /四字节
转换为Unicode UTF-16
C =(x<<10)+(s.charcodeat(+ +我)^ 0xdc00)+ 0x10000,
R.push(0xf0 +(C>18,0x80 0x7)+(C > > 12 0x3f));
其他r.push(0xE0 +(C>12 0xf));
R.push(0x80 +(C>6,0x80 0x3f)+(C 0x3f));
};
返回R;
};
十六进制字符串/字符串加密
函数SHA1(){
VaR数据=新uint8array(encodeutf8(S))
变量i,j,t;
Var(L =(data.length + 8)> > > 6 < 4)+ 16,S =新uint8array(L<2);
成立(新uint8array(数据缓冲区)),S =新uint32array(s.buffer);
为(t =新的DataView(s.buffer),i = 0;i < L;i++)的{我} = t.getuint32(i<2);
data.length 的{ 2 }0x80 | =(24 -(data.length 3)* 8);
{ 1 }的L = data.length << 3;
var。
函数(返回M { 1 }){我{ 2 } ~ M { 1 }是{ 3 } } |,
函数(){返回m 1 { } { 2 } { 3 };},
函数(返回M { 1 }){我{ 2 }是{ 1 }是{ 3 } | | M { 2 }是{ 3 };},
函数{(){返回m 1 { } { 2 } { 3 };}
},ROL =功能(N,C){ return n>(32 C);},
k=1518500249, 1859775393,- 1894007588,- 899497514 },
m = 1732584193,- 271733879,NULL,NULL,- 1009589776 };
m { 2 } = m { 0 },m { 3 } = m { 1 };
为(i = 0;i < s.length;i = 16){
var o = m.slice(0);
对于(j=0;j<80;j + +)
{ } = W J J<16的{我+ J }:ROL(W { 3 } ^ J W { 8 },{ 14 } ^ W J ^ W { J - 1),
T =
控制(M { 0 },{ 5)+ F J / 0 }(20 |)+ M { 4 } { } + K + W J J / 20 { 0 } | | 0,
M { 1 } =控制(M { 1 },30)、M. Pop()、m.unshift(T);
为(J = 0;J<5;j++)M { } = { } J M J + O { } 0 | {J}.;
};
T =新的DataView(新uint32array(M)。Buffer);
对于(var i = 0;i < 5;i++)M {我} = t.getuint32(i<2);
VaR进制= array.prototype.map.call(新uint8array(新uint32array(M)。Buffer)、功能(e){
返回(E<16 0 )+ e.tostring(16);
})加入();
返回六;
};
导出功能
module.exports = { {
时间
格式化:时间格式化,
SHA1:SHA1
}
这可以在其他页面中调用。
VaR工具=需要(.. / / /工具..工具。JS的)
util.sha1(123456 )
以
密码123456为例,在线加密结果
调用一个小程序的结果
加密结果是相同的。