当前位置:首页 > 日记 > 正文

用Javascript实现SHA-1加密算法的方法

用Javascript实现SHA-1加密算法的方法
本文介绍一种用Javascript实现SHA-1加密算法的方法,分享给你参考。具体实现的方法如下:

调用方法:hex_sha1。

将代码复制如下:

*

*一个安全散列alrithm,SHA-1的Javascript实现,定义

*在FIPS PUB 180-1

*

* lizq

*

* 2006-11-11

*

* /

*

*

*可配置变量。

*

* /

无功hexcase = 0; / *进制输出格式。0 -小写;1 -大写。

无功chrsz = 8;每输入字符 / *位。8 - ASCII码;16 - Unicode。

*

*

*计算消息摘要的主要功能

*

* /

功能hex_sha1(s){

返回binb2hex(core_sha1(alignsha1(S)));

}

*

*

*执行简单的自检,看看VM是否正常工作。

*

* /

功能sha1_vm_test(){

返回hex_sha1(ABC)= =a9993e364706816aba3e25717850c26c9cd0d89d ;

}

*

*

*计算大端字数组SHA-1,和一点

*

* /

功能core_sha1(blockarray){

var x = blockarray; / /添加填充

数组(80);

var a=1732584193;

var = 271733879;

var = 1732584194;

var=271733878;

var = 1009589776;

对于(var i = 0;i < x.length;i = 16) / /每512 16 * 32

{

VaR OLDA =一;

VaR现代化= B;

无功oldc = C;

无功氧化物轻掺杂漏衬垫结构= D;

VaR Olde = E;

对于每个512位80步(var = 0;j < 80);

{

如果(j<16)

w J = { i + j };

其他的

W { } =作用{J}.(W { 3 } ^ J W { 8 },{ 14 } ^ W J ^ W { 16 } J,1);

var t = safe_add(safe_add(ROL(一,5),sha1_ft(J,B,C,D));

e=d;

D = C;

C =控制(B,30);

乙=;

甲;

}

a safe_add(一处);

B = safe_add(B,奥尔登堡);

C = safe_add(C,oldc);

a safe_add(D,氧化物轻掺杂漏衬垫结构);

E = safe_add(E,奥尔德);

}

返回新数组(A,B,C,D,E);

}

*

*

*为当前执行适当的三重组合函数。

*迭代

*

*返回相应f函数的值。

*

* /

功能sha1_ft(T,B,C,D){

如果(t<20)

返回(B C)|((~ B)D);

如果(t<40)

返回;

如果(t<60)

返回(B C)|(B D)|(C D);

还可以返回80。

}

*

*

*确定当前迭代的适当相加常数

*

*返回相应的KT值。

*

* /

功能sha1_kt(T){

返回(t<20)1518500249:(t<40)1859775393:(t<60)- 1894007588:- 899497514;

}

*

*

*添加整数,包装在2×32。这在内部使用16位操作。

*

*在一些JS解释器中处理bug。

*

*将32位数字分别添加到高位16位和低16位,以便添加mod 2 - 32实现。

*

* /

功能safe_add(x,y){

VaR模型=(X 0xFFFF)+(Y 0xFFFF);

VaR垃圾=(x > 16)+(y > > 16)+(LSW > > 16);

返回(MSW<16)|(LSW 0xFFFF);

}

*

*

* Bitwise旋转一个32位数字的左边。

*

* 32位二进制数循环左移位

*

* /

功能作用(num,CNT){

返回(数字>(32 - CNT));

}

*

*

*标准SHA1需要输入的字符串插入块

*

*此函数对齐输入字符串以满足需求。

*

* /

功能alignsha1(STR){

无功nblk =((str.length + 8)> > 6)+ 1,盖帽=新的数组(nblk×16);

对于(var i = 0;i < nblk×16;i++)

盖帽{我} = 0;

为(i = 0;i < str.length;i++)

{ 2 } str.charcodeat盖帽(我)| =(24 -(3)* 8);

2次盖帽{我}0x80 | =(24 -(3)* 8);

盖帽{ nblk * 16 - 1 * 8 = str.length };

返回BLKS;

}

*

*

*将大端字数组一进制字符串。

*

* /

功能binb2hex(binarray){

无功hex_tab = hexcase0123456789abcdef 0123456789abcdef ;

var;

对于(var i = 0;i < binarray.length×4;i++){

(str = hex_tab.charat(binarray { 2 }我> > > >((3 - 4我%)* 8 + 4))+ 0xf)

hex_tab.charat((binarray { 2 }我> > >)((3 - % 4)* 8))0xf));

}

返回字符;

}

*

*

*计算消息摘要根据源信息,输入

*

* /

功能calcdigest(){

无功digestm = hex_sha1(文档。shaform。信源。值);

document.shaform.messagedigest.value = digestm;

}

希望本文能对大家的javascript程序设计有所帮助。

相关文章

如果你有这33个症状,就离开电脑去!

如果你有这33个症状,就离开电脑去!

症状,你有,电脑软件,既然你选择了设计作为一种职业,你注定要成为你余生的电脑。但这并不意味着你应该忽视自己的健康。每个人都知道长时间对着电脑,一个是伤害你的眼睛,但也能导致久坐不动的饮料,因为你每天面对电脑的退出,而不是一个真正的人。…

PS教程:超精细的画家画今天的标题三

PS教程:超精细的画家画今天的标题三

图标,教程,画家,标题,超精细,本教程教学习者PS PS鼠标画超精画今日头条立体图标,教程画出漂亮的图标,画起来并不难,建议与朋友分享学习。 本教程教学习者PS PS鼠标画超精画今日头条立体图标,教程画出漂亮的图标,画起来并不难,建议与朋友分享学习…

对车削时显示的方法jQuery实现的

对车削时显示的方法jQuery实现的

方法,显示,电脑软件,jQuery,本文的例子告诉jQuery实现渐明的显示方式。分享给你供你参考。具体实现的方法如下: $(函数(){()) 打开/显示 $(# Zuixin div:不(:一))。Css(显示 var b = $(# Zuixin div:最后的); var c = $(# Zuixin div:第一); setInterval(){()函数( 如…

PHPPDO的一些认识

PHPPDO的一些认识

电脑软件,PHPPDO,1、PDO(PHP数据对象)延伸到PHP定义一个轻量级的、持续的接口访问数据库,每个数据库驱动程序实现PDO接口可以在规则扩展的形式显示其自身的特点。 主要有:PDO扩展只是一个抽象的接口层。使用PDO扩展本身并不能实现任何数据库操…

用角写一个HelloWorld

用角写一个HelloWorld

电脑软件,用角写,HelloWorld,Angularjs遵循MVC模式,这是习惯有一个Hello World 复制代码代码如下所示: {问候语,文本},世界 内容controllers.js 复制代码代码如下所示: 函数的HelloController(范围){ scope.greeting美元= {文字:'你好' }; …

Wulitou的校园搞笑个性签名

Wulitou的校园搞笑个性签名

个性签名,搞笑,校园,电脑软件,Wulitou,下学期你不必上学了。我引爆了学校。 有一种骨头叫无聊死了,没有复习。 老师任性,我们接受。 不要叫我做作业。我退出。 未来有多远,你要走多远。 夏天是男孩们展示双腿的季节。 家庭作业是不死族的老板…

ai为文本做了漂亮的长投影。

ai为文本做了漂亮的长投影。

投影,文本,漂亮,电脑软件,ai,本教程是介绍朋友制作长投影效果漂亮的ai语言教程使用,效果真的很漂亮,不是很难,推荐喜欢的朋友可以跟着教程一起学习,希望能帮到你。 本教程所教的ai学习者使用人工智能创建文本的漂亮的长投影效果。本教程制作的…

如何用ps曲线复制另一张照片的色调

如何用ps曲线复制另一张照片的色调

照片,色调,曲线,如何用,电脑软件,这是萧边向你展示如何使用PS曲线复制的另一张照片色调的方法。这个教程很实用。这对学习ps的朋友很有帮助。我建议你喜欢你的朋友一起学习。 如何把另一片的外观和感觉,将你的照片在肉眼就猜到,这也许不容易,…

无组件分页asp的实现与代码

无组件分页asp的实现与代码

分页,代码,无组件,电脑软件,asp,在MVC: 背景代码: 复制代码代码如下所示: 公共的ActionResult系统(字符串页) { 如果(页= NULL) { SQL选择前15 * dingdinfo顺序dingdh desc; 可视数据{DS} = dr.resultset(SQL,dingdinfo ); } 如果(页)!= null) { 国际pagesl…

linux下利用PHP获取系统分区信息的

linux下利用PHP获取系统分区信息的

方法,系统分区,电脑软件,linux,PHP,本文介绍了在linux系统中用PHP获取系统分区信息的方法,供大家参考,具体实现方法如下: 部(爆炸array_filter美元=( foreach(pars美元美元面值){ 如果($ { 0 } = ){ _tmp美元= array_values(array_filter(爆炸($面值)))); 复…

ps路径工具给文本排版小知识

ps路径工具给文本排版小知识

文本,路径,工具,小知识,电脑软件,本教程将介绍关于文本排版的ps路径工具的一些知识。本教程既实用又基础。对初学者来说是值得学习的。 文字排版从来就不是一张有趣的纸,尤其是当它需要应用到曲线的形状时,虽然ps为我们提供了可变形文本这一…

ps处理模糊照片10种技术综述

ps处理模糊照片10种技术综述

照片,综述,模糊,技术,电脑软件,下面是ps处理模糊照片的10种技巧。这个教程很实用,但是有点难。作者没有详细介绍,并推荐它。让我们一起学习。 作者太强了,但这里只是一些技巧。我们可以做一个教程看看它自己的水平吗下面,我们总结了ps处理模糊…