数字签名与加密的区别

编程技术  /  houtizong 发布于 3年前   342

数字签名更多是用来校验信息有没有被修改过,而加密可以彻底杜绝防止别人看到信息内容

 

SHA-1 和 MD5算法 

 

严格说来它们不算是加密算法,只能说是摘要算法。

SHA-1算法:Security Hash Algorithm 安全哈希算法, 它可以把长度不超过2的64次方位的信息转换成160位(20字节)长的散列值

 

MD5算法:Message Digest 信息摘要算法, 散列长度是128位,16个字节。它对输入以512位分组,输出是4个32位字的级联。

 

CRC算法:循环冗余校验,碰撞几率比较高

 

加密技术可以分为对称非对称两种.

对称加密,解密,即加密与解密用的是同一把秘钥,常用的对称加密技术有DES,AES等

 

而非对称技术,加密与解密用的是不同的秘钥,常用的非对称加密技术有RSA等

 

  例如DES对称加密代码:  

/** * 给用户id和设备id进行加密,添加时间属性 *  * @param userId * @return */public static String encode(Long userId, Long deviceId) {try {Random random = new Random();StringBuilder sb = new StringBuilder();for (int i = 0; i < 16; i++) {sb.append(values[random.nextInt(values.length - 1)]);}String randomCode = sb.toString();SecretKey deskey = new SecretKeySpec((randomCode + KEYPREFIX).getBytes("utf-8"), "DESede"); // 加密Cipher c1 = Cipher.getInstance("DESede");c1.init(Cipher.ENCRYPT_MODE, deskey);String str = "";String time=new SimpleDateFormat("yyyyMM").format(new Date());if (deviceId != null && deviceId > 0) {str = Tf8Base64.base32Encode(c1.doFinal(String.valueOf(userId + SEP + deviceId+SEP+Long.valueOf(time)).getBytes("utf-8")));} else {str = Tf8Base64.base32Encode(c1.doFinal(String.valueOf(userId).getBytes("utf-8")));}return URLEncoder.encode(UNDERLINE + str + randomCode, "utf-8");} catch (Exception e) {log.error("error happens when encode userId for " + userId + ",error info is " + e.getMessage(), e);}return "";}

 

   DES 解密

  

/**  * @param code * @return */public static String decode(String code) {try {code = URLDecoder.decode(code, "utf-8");String userId = code.substring(0, code.length() - 16);String randomCode = code.substring(code.length() - 16);SecretKey deskey = new SecretKeySpec((randomCode + KEYPREFIX).getBytes("utf-8"), "DESede"); // 解密Cipher c1 = Cipher.getInstance("DESede");c1.init(Cipher.DECRYPT_MODE, deskey);return new String(c1.doFinal(Tf8Base64.base32Decode(userId)));} catch (Exception e) {log.error("error happens when decode code for " + code + ",error info is " + e.getMessage(), e);}return "";}

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客