摘要

我们很难想象用户在什么样的网络环境使用我们开发的应用,如果用户所处的网络环境不是一个可信任的环境,那么用户的账户安全就可能有威胁,比如用户登陆时提交的账号密码被网络嗅探器窃取;客户端加密数据能有效的防御网络嗅探器窃取数据,通过在客户端Javascript加密数据后再提交至服务端进行验证有效提高了系统的安全系数,这符合纵深防御原则和数据安全要素机密性;本文整理了两种常用的加密算法:md5和sha1;

HashEncrypt加密对象

加密算法封装HashEncrypt对象中,包含MD5、SHA1两个方法和HashFormat属性,此外还扩展了系统的String类型,为其实例添加了md5和sha1方法;

属性

HashFormat:输出格式枚举,是object类型,静态结构:{ Base64: "Base64", Hex: "Hex", String: "String" }

方法

MD5方法

HashEncrypt.MD5(string,ascii,hexUpperCase )

string   类型:string ,要需要加密的内容,必须的

ascii 类型:bool,可选的,是否以ASCII字符编码加密,默认是Unicode

hexUpperCase   类型:bool,可选的,输出的十六进制编码是否为大写

HashEncrypt.MD5(string,base64Pad,ascii )

string   类型:string ,要需要加密的内容

ascii 类型:bool,是否以ASCII字符编码加密,默认是Unicode

base64Pad   类型:string,输出base64的填充字符默认是"=",如果设置这个参数为字符串那么输出格式默认是base64编码。

HashEncrypt.MD5(string,hexUpperCase)

string   类型:string ,要需要加密的内容

hexUpperCase   类型:number,1表示输出的十六进制编码为大写;

HashEncrypt.MD5(string,options)

string   类型:string ,要需要加密的内容

options   类型:object,加密的参数选项;

options属性说明:

ascii 类型:bool,是否以ASCII字符编码加密,默认是Unicode

base64 类型:string,输出base64的填充字符默认是"=",如果设置这个参数为字符串那么输出格式默认是base64编码。

hexUpperCase 类型:bool,输出的十六进制编码是否为大写

format 类型:HashEncrypt.HashFormat枚举类型,表示密文的输出格式,可选值有:

"Base64" base64编码格式 、 "Hex"十六进制编码格式、 "String"直接转换字符串格式;

hmacKey 类型:string,可选的,使用 MD5 哈希函数计算基于哈希值的消息验证代码 (HMAC),

此 HMAC 进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希函数。输出的哈希值长度为 128 位。

示例:

 <script>
var data = HashEncrypt.MD5("hello world!",false,false);
//"hello world!".md5(false,false) //这行代码上面的效果是同样的结果
document.write(data);
</script>

输出结果:99da75326ffaf6acc0debe844b359894

SHA1方法

这个方法的签名和MD5方法的完全一致的,在这里就不重述了,哈哈哈。。

代码下载:

源码和方法演示

http://files.cnblogs.com/Jackson-Bruce/%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%93%88%E5%B8%8C%E5%8A%A0%E5%AF%86.zip

发布版

http://files.cnblogs.com/Jackson-Bruce/HashEncrypt.min.js

相关资料:

http://pajhome.org.uk/crypt/md5

客户端哈希加密(Javascript哈希加密,附源码)的更多相关文章

  1. JavaScript动画附源码(一)

        JavaScript完成动画程序 1,效果图: 以上是纯CSS+JavaScript实现的.点击关闭按钮可以动态关闭这个方框.兼容IE/FF/Chrome.这样的效果如果用jquery实现起来 ...

  2. 聊天系统Demo,增加Silverlight客户端(附源码)-- ESFramework 4.0 快速上手(09)

    在ESFramework 4.0 快速上手 -- 入门Demo,一个简单的IM系统(附源码)一文中,我们介绍了使用ESFramework的Rapid引擎开发的winform聊天程序,本文我们将在之前d ...

  3. 在网站开发中很有用的8个 jQuery 效果【附源码】

    jQuery 作为最优秀 JavaScript 库之一,改变了很多人编写 JavaScript 的方式.它简化了 HTML 文档遍历,事件处理,动画和 Ajax 交互,而且有成千上万的成熟 jQuer ...

  4. ASP.NET程序读取二代身份证(附源码)

    原文:ASP.NET程序读取二代身份证(附源码) 一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了. 这里我说说我的解决思路: 一.你必要有联机型居民身份证阅读器一 ...

  5. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper(三:附源码)

    前言:之前的两篇封装了一些基础的表单组件,这篇继续来封装几个基于bootstrap的其他组件.和上篇不同的是,这篇的有几个组件需要某些js文件的支持. 本文原创地址:http://www.cnblog ...

  6. 轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)

    在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类:文本消息.二进制消息. 文本协议相对简单,通常使用一个特殊的标记符作为一个消息的结束. 二进制协议,通常是由消息头(Head ...

  7. 精选9个值得学习的 HTML5 效果【附源码】

    这里精选了一组很酷的 HTML5 效果.HTML5 是现 Web 开发领域的热点, 拥有很多让人期待已久的新特性,特别是在移动端,Web 开发人员可以借助 HTML5 强大功能轻松制作各种交互性强.效 ...

  8. (原创)通用查询实现方案(可用于DDD)[附源码] -- 简介

    [声明] 写作不易,转载请注明出处(http://www.cnblogs.com/wiseant/p/3985353.html).   [系列文章] 通用查询实现方案(可用于DDD)[附源码] -- ...

  9. 精选12个时尚的 CSS3 效果【附源码下载】

    这里是精选的12个很炫的 CSS3 效果.CSS3 是对 CSS 规范的一个很大的改善和增强,它使得 Web 开发人员可以很容易的在网站中加入时尚的效果.以前很多需要编写复杂的 JavaScript ...

  10. 让你心动的 HTML5 & CSS3 效果【附源码下载】

    这里集合的这组 HTML5 & CSS3 效果,有的是网站开发中常用的.实用的功能,有的是先进的 Web 技术的应用演示.不管哪一种,这些案例中的技术都值得我们去探究和学习. 超炫的 HTML ...

随机推荐

  1. C语言调查问卷

    1.你对自己的未来有什么规划?做了哪些准备?毕业后应该不会从事编程类工作,目前有在学习感兴趣的东西.2.你认为什么是学习?学习有什么用?现在学习动力如何?为什么?学习就是把不懂变成懂,可以充实自己.没 ...

  2. ASP.NET Core 中的 Razor 页面介绍

    标题:ASP.NET Core 中的 Razor 页面介绍 地址:https://docs.microsoft.com/zh-cn/aspnet/core/razor-pages/index?view ...

  3. Iterable,Iterator和forEach

    Iterable Interface Iterable<T> 方法: Iterator<T> iterator() Returns an iterator over a set ...

  4. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day1)

    概述 Scrum 冲刺博客对整个冲刺阶段起到领航作用,应该主要包含三个部分的内容: ① 各个成员在 Alpha 阶段认领的任务 ② 明日各个成员的任务安排 ③ 整个项目预期的任务量(使用整数表示,与项 ...

  5. freemarker中空值 null的处理 ?exists ?if_exists ?default(“”)

    exists:由空值测试运算符的引入,它被废弃了. exp1?exists 和 exp1??是一样的, ( exp1)?exists 和(exp1)??也是一样的. if_exists:由默认值运算符 ...

  6. (十二)Jmeter之Bean Shell的使用(一)

    一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...

  7. stm32中使用#pragma pack(非常有用的字节对齐用法说明)

    #pragma pack(4)   //按4字节对齐,但实际上由于结构体中单个成员的最大占用字节数为2字节,因此实际还是按2字节对齐 typedef struct { char buf[3];//bu ...

  8. Appium与Robotium区别

    Appium是基于UIAutomator框架实现的.Appium测试进程与目标应用进程是分开的,所以Appium不能直接访问目标应用的各种element属性进行copy&paste,而只能模拟 ...

  9. [COGS1000]伊吹萃香 最短路

    1000. [東方S2] 伊吹萃香 输入文件:suika.in   输出文件:suika.out   简单对比 时间限制:1 s   内存限制:128 MB Problem 4 伊吹萃香(suika. ...

  10. Linux学习笔记一:Linux配置java环境变量

    一.安装JDK: 1.创建JDK的安装目录: sudo mkdir /usr/jdk 2.将jdk-7u25-linux-x64.tar.gz拷贝至/usr/jdk目录下 sudo cp jdk-7u ...