sha1算法还是比较潮流的算法并且可以简单使用的算法,建议新手可以选用sha1算法。

百度百科对sha1算法的解释:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。

下面是使用的过程,

1.首先在前端,对需要传到后端数据进行加密(需要导入sha1.js)

var sha = hex_sha1('helloworld') ;

alert(sha);

提示框加密结果为:07f804138ac308f552b17d7881105a9cb08758ca;

2.在后端对数据进行加密对比

public static String getSha1(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException {

if (null == str || str.length() == 0){

return null;

}

char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',

'a', 'b', 'c', 'd', 'e', 'f'};

try {

MessageDigest mdTemp = MessageDigest.getInstance("SHA1");

mdTemp.update(str.getBytes("UTF-8"));

byte[] md = mdTemp.digest();

int j = md.length;

char[] buf = new char[j * 2];

int k = 0;

for (int i = 0; i < j; i++) {

byte byte0 = md[i];

buf[k++] = hexDigits[byte0 >>> 4 & 0xf];

buf[k++] = hexDigits[byte0 & 0xf];

}

return new String(buf);

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {

String data = "helloworld";

String result = getSha1(data);

System.out.println("加密后:"+result);

}

注意如果涉及到中文的话,js和java的结果可不一样。因为js对中文字符串处理为utf-16格式的。而java是utf-8所以我们要对字符串进行转换。代码如下:

function utf16to8(str){

var out, i, len, c;

out = "";

len = str.length;

for(i = 0; i < len; i++){

c = str.charCodeAt(i);

if ((c >= 0x0001) && (c <= 0x007F)) {

out += str.charAt(i);

} else if (c > 0x07FF){

out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));

out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));

out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));

} else {

out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));

out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));

}

}

return out;

}

我是个菜鸟,如果有什么不对或不好的地方欢迎指点。

java sha1hash 算法_javaweb使用sha1算法登录加密的整个过程相关推荐

  1. md5 java代码_JAVA简单实现MD5注册登录加密实例代码

    开发环境:jdk1.7,eclipse 框架:springmvc,mybatis 工具:maven 以下代码复制即可实现MD5加密 创建一个mave项目,加web.不懂得可以搜索一下就有了. 注册用户 ...

  2. 最简单的代码Java实现DM5,SHA-256,SHA-512,SHA1,haval160,4加密

    public class CommonUtils {/** * [描述: desc] * * @param algo 要使用的哈希算法,例如:"md5","sha256& ...

  3. c语言实现sha1算法注解,【密码学】SHA1算法实现及详解

    1 SHA1算法简介 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digit ...

  4. sha1原型 c语言,SHA1算法实现(C语言)

    SHA1算法实现 1. SHA1算法简介 对于长度小于2^64位的消息,SHA1产生一个160位的消息摘要.主要用于验证数据的完整性. 2. SHA1算法原理 a. 数据填充规则 对消息填充,使得其比 ...

  5. Java实现密码学工具,集成了对称加密算法DES,AES,IDEA,公开加密算法RSA,ECC,散列算法MD5,SHA1,CRC32,以及RSA,DSA,ECDSA数字签名验证示例。

    密码学综合工具 前言 git网址 项目结构 项目预览 String与byte[]互转 通过`String`类转换 通过`Base64`互转[jdk-8] 前言 我们网络信息安全的实验...要我们找各种 ...

  6. Java 实现sha_Java实现SHA-1算法实例

    本文实例讲述了java实现sha-1算法的方法.分享给大家供大家参考.具体实现方法如下: public class sha1util { private static final boolean he ...

  7. 基于Java的SHA-1算法原生不调库实现

    1 sha-1的核心计算类 package com.encryption.presentationTool.encryptionTool;import java.util.Arrays;public ...

  8. Java的MessageDigest类、MD5算法

    什么是MD5算法 MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash val ...

  9. Python:实现sha1算法(附完整源码)

    Python:实现sha1算法 import argparse import hashlib # hashlib is only used inside the Test class import s ...

最新文章

  1. java将异常输出到日志_【ThinkingInJava】25、将异常输出记录到日志
  2. c++网络编程连接成功后回调onconnected_谈谈网络编程(基于C++)
  3. 怎样学好c语言程序设计这门,初学C语言程序设计的基本方法和技巧
  4. 计算几何基本知识整理
  5. 【Swing 3】布局管理器与简单的聊天界面
  6. Informatica通过人工智能重新定义数据管理助力数据驱动型数字化转型
  7. 怎样测网络服务器延迟,网速测试延迟(网络延迟多少正常)
  8. 声反馈系统:陷波型啸叫抑制器的啸叫检测方法大总结
  9. retina屏 适配问题
  10. wpf中使用ListView
  11. 上海互联网整体沉沦:盛大巨人全没落 8年没出一个马云
  12. python静态函数
  13. 现代微积分学的公理观
  14. UEFI and legacy
  15. java进阶第二讲-数组、String类
  16. 第九篇:强化学习Q-learning算法 通俗介绍
  17. 从零开始学AI(Python基础)
  18. 购物类APP之王——淘宝安卓版(二)
  19. 什么是MiniPCIe?MiniPCIe的作用是什么?
  20. 远控免杀专题(67)-白名单(113个)总结篇

热门文章

  1. 【kafka】Kafka 2.0 ConsumerGroupCommand新功能
  2. 【Elasticsearch】 Elasticsearch slop管理间隔字符查数据
  3. Spring : Spring kafka 入门Demo
  4. 【Flink】ExceptionInChainedOperatorException: Could not forward element to next operator Buffer
  5. 95-225-040-源码-广播-简介
  6. 【zookeeper】Zookeeper:ZooInspector界面工具
  7. 企业级iptalbes防火墙
  8. shell 编程-Expect
  9. 联想开机启动项按哪个_win7系统如何修改系统启动项 win7系统修改系统启动项方法【步骤】...
  10. 【云计算平台】VMware搭建Centos 7虚拟机