当前位置: 首页 > news >正文

签订网站建设合同需要注意什么wordpress单页后台模板

签订网站建设合同需要注意什么,wordpress单页后台模板,WordPress 黏贴图片,电商网站运营建设的目标为什么80%的码农都做不了架构师#xff1f; 一、简述 mac#xff08;Message Authentication Code#xff0c;消息认证码算法#xff09;是含有密钥散列函数算法#xff0c;兼容了MD和SHA算法的特性#xff0c;并在此基础上加上了密钥。因此MAC算法也经常… 为什么80%的码农都做不了架构师    一、简述   macMessage Authentication Code消息认证码算法是含有密钥散列函数算法兼容了MD和SHA算法的特性并在此基础上加上了密钥。因此MAC算法也经常被称作HMAC算法。关于hmac算法的详情可以参看RFC 2104(http://www.ietf.org/rfc/rfc2104.txt)这里包含了HmacMD5算法的C语言实现。   这里需要说明的是经过mac算法得到的摘要值也可以使用十六进制编码表示其摘要值得长度与实现算法的摘要值长度相同。例如 HmacSHA算法得到的摘要长度就是SHA1算法得到的摘要长度都是160位二进制数换算成十六进制的编码为40位。   二、模型分析 甲乙双方进行数据交换可以采取如下流程完成 1、甲方向乙方公布摘要算法就是指定要使用的摘要算法名 2、甲乙双方按照约定构造密钥双方拥有相同的密钥一般是一方构造密钥后通知另外一方此过程不需要通过程序实现就是双方约定个字符串但是这个字符串可不是随便设定的也是通过相关算法获取的 3、甲方使用密钥对消息做摘要处理然后将消息和生成的摘要消息一同发送给乙方 4、乙方收到消息后使用甲方已经公布的摘要算法约定好的密钥 对收到的消息进行摘要处理。然后比对自己的摘要消息和甲方发过来的摘要消息。甄别消息是否是甲方发送过来的   三、MAC系列算法支持表   算法 摘要长度 备注 HmacMD5 128 JAVA6实现 HmacSHA1 160 JAVA6实现 HmacSHA256 256 JAVA6实现 HmacSHA384 384 JAVA6实现 HmacSHA512 512 JAVA6实现 HmacMD2 128 BouncyCastle实现 HmacMD4 128 BouncyCastle实现 HmacSHA224 224 BouncyCastle实现   四、sun以及bouncycastle的hmac算法实现 package com.ca.test; import java.security.Security; import javax.crypto.KeyGenerator; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.util.encoders.Hex; /*** MAC消息摘要组件* author kongqz* */ public class MACCoder { ///HmacMD5////*** 初始化HmacMD5的密钥* return byte[] 密钥* * */public static byte[] initHmacMD5Key() throws Exception{//初始化KeyGeneratorKeyGenerator keyGeneratorKeyGenerator.getInstance(HmacMD5);//产生密钥SecretKey secretKeykeyGenerator.generateKey();//获取密钥return secretKey.getEncoded();}/*** HmacMD5消息摘要* param data 待做摘要处理的数据* param key 密钥* return  byte[] 消息摘要* */public static byte[] encodeHmacMD5(byte[] data,byte[] key) throws Exception{//还原密钥因为密钥是以byte形式为消息传递算法所拥有SecretKey secretKeynew SecretKeySpec(key,HmacMD5);//实例化MacMac macMac.getInstance(secretKey.getAlgorithm());//初始化Macmac.init(secretKey);//执行消息摘要处理return mac.doFinal(data);}///HmacSHA1///*** 初始化HmacSHA1的密钥* return byte[] 密钥* * */public static byte[] initHmacSHAKey() throws Exception{//初始化KeyGeneratorKeyGenerator keyGeneratorKeyGenerator.getInstance(HmacSHA1);//产生密钥SecretKey secretKeykeyGenerator.generateKey();//获取密钥return secretKey.getEncoded();}/*** HmacSHA1消息摘要* param data 待做摘要处理的数据* param key 密钥* return  byte[] 消息摘要* */public static byte[] encodeHmacSHA(byte[] data,byte[] key) throws Exception{//还原密钥因为密钥是以byte形式为消息传递算法所拥有SecretKey secretKeynew SecretKeySpec(key,HmacSHA1);//实例化MacMac macMac.getInstance(secretKey.getAlgorithm());//初始化Macmac.init(secretKey);//执行消息摘要处理return mac.doFinal(data);}///HmacSHA256///*** 初始化HmacSHA256的密钥* return byte[] 密钥* * */public static byte[] initHmacSHA256Key() throws Exception{//初始化KeyGeneratorKeyGenerator keyGeneratorKeyGenerator.getInstance(HmacSHA256);//产生密钥SecretKey secretKeykeyGenerator.generateKey();//获取密钥return secretKey.getEncoded();}/*** HmacSHA256消息摘要* param data 待做摘要处理的数据* param key 密钥* return  byte[] 消息摘要* */public static byte[] encodeHmacSHA256(byte[] data,byte[] key) throws Exception{//还原密钥因为密钥是以byte形式为消息传递算法所拥有SecretKey secretKeynew SecretKeySpec(key,HmacSHA256);//实例化MacMac macMac.getInstance(secretKey.getAlgorithm());//初始化Macmac.init(secretKey);//执行消息摘要处理return mac.doFinal(data);}///HmacSHA384///*** 初始化HmacSHA384的密钥* return byte[] 密钥* * */public static byte[] initHmacSHA384Key() throws Exception{//初始化KeyGeneratorKeyGenerator keyGeneratorKeyGenerator.getInstance(HmacSHA384);//产生密钥SecretKey secretKeykeyGenerator.generateKey();//获取密钥return secretKey.getEncoded();}/*** HmacSHA384消息摘要* param data 待做摘要处理的数据* param key 密钥* return  byte[] 消息摘要* */public static byte[] encodeHmacSHA384(byte[] data,byte[] key) throws Exception{//还原密钥因为密钥是以byte形式为消息传递算法所拥有SecretKey secretKeynew SecretKeySpec(key,HmacSHA384);//实例化MacMac macMac.getInstance(secretKey.getAlgorithm());//初始化Macmac.init(secretKey);//执行消息摘要处理return mac.doFinal(data);}///HmacSHA512///*** 初始化HmacSHA512的密钥* return byte[] 密钥* * */public static byte[] initHmacSHA512Key() throws Exception{//初始化KeyGeneratorKeyGenerator keyGeneratorKeyGenerator.getInstance(HmacSHA512);//产生密钥SecretKey secretKeykeyGenerator.generateKey();//获取密钥return secretKey.getEncoded();}/*** HmacSHA512消息摘要* param data 待做摘要处理的数据* param key 密钥* return  byte[] 消息摘要* */public static byte[] encodeHmacSHA512(byte[] data,byte[] key) throws Exception{//还原密钥因为密钥是以byte形式为消息传递算法所拥有SecretKey secretKeynew SecretKeySpec(key,HmacSHA512);//实例化MacMac macMac.getInstance(secretKey.getAlgorithm());//初始化Macmac.init(secretKey);//执行消息摘要处理return mac.doFinal(data);} ///HmacMD2-BouncyCastle才支持的实现///*** 初始化HmacMD2的密钥* return byte[] 密钥* */public static byte[] initHmacMD2Key() throws Exception{//加入BouncyCastleProvider的支持Security.addProvider(new BouncyCastleProvider());//初始化KeyGeneratorKeyGenerator keyGeneratorKeyGenerator.getInstance(HmacMD2);//产生密钥SecretKey secretKeykeyGenerator.generateKey();//获取密钥return secretKey.getEncoded();}/*** HmacMD2消息摘要* param data 待做摘要处理的数据* param key 密钥* return  byte[] 消息摘要* */public static byte[] encodeHmacMD2(byte[] data,byte[] key) throws Exception{//加入BouncyCastleProvider的支持Security.addProvider(new BouncyCastleProvider());//还原密钥因为密钥是以byte形式为消息传递算法所拥有SecretKey secretKeynew SecretKeySpec(key,HmacMD2);//实例化MacMac macMac.getInstance(secretKey.getAlgorithm());//初始化Macmac.init(secretKey);//执行消息摘要处理return mac.doFinal(data);}/*** HmacMD2Hex消息摘要* param data 待做消息摘要处理的数据* param String 密钥* return byte[] 消息摘要* */public static String encodeHmacMD2Hex(byte[] data,byte[] key) throws Exception{//执行消息摘要处理byte[] bencodeHmacMD2(data,key);//做十六进制转换return new String(Hex.encode(b));}///HmacMD4-BouncyCastle才支持的实现///*** 初始化HmacMD2的密钥* return byte[] 密钥* */public static byte[] initHmacMD4Key() throws Exception{//加入BouncyCastleProvider的支持Security.addProvider(new BouncyCastleProvider());//初始化KeyGeneratorKeyGenerator keyGeneratorKeyGenerator.getInstance(HmacMD4);//产生密钥SecretKey secretKeykeyGenerator.generateKey();//获取密钥return secretKey.getEncoded();}/*** HmacMD4消息摘要* param data 待做摘要处理的数据* param key 密钥* return  byte[] 消息摘要* */public static byte[] encodeHmacMD4(byte[] data,byte[] key) throws Exception{//加入BouncyCastleProvider的支持Security.addProvider(new BouncyCastleProvider());//还原密钥因为密钥是以byte形式为消息传递算法所拥有SecretKey secretKeynew SecretKeySpec(key,HmacMD4);//实例化MacMac macMac.getInstance(secretKey.getAlgorithm());//初始化Macmac.init(secretKey);//执行消息摘要处理return mac.doFinal(data);}/*** HmacMD4Hex消息摘要* param data 待做消息摘要处理的数据* param String 密钥* return byte[] 消息摘要* */public static String encodeHmacMD4Hex(byte[] data,byte[] key) throws Exception{//执行消息摘要处理byte[] bencodeHmacMD4(data,key);//做十六进制转换return new String(Hex.encode(b));} ///HmacSHA224-BouncyCastle才支持的实现///*** 初始化HmacSHA224的密钥* return byte[] 密钥* */public static byte[] initHmacSHA224Key() throws Exception{//加入BouncyCastleProvider的支持Security.addProvider(new BouncyCastleProvider());//初始化KeyGeneratorKeyGenerator keyGeneratorKeyGenerator.getInstance(HmacSHA224);//产生密钥SecretKey secretKeykeyGenerator.generateKey();//获取密钥return secretKey.getEncoded();}/*** HmacSHA224消息摘要* param data 待做摘要处理的数据* param key 密钥* return  byte[] 消息摘要* */public static byte[] encodeHmacSHA224(byte[] data,byte[] key) throws Exception{//加入BouncyCastleProvider的支持Security.addProvider(new BouncyCastleProvider());//还原密钥因为密钥是以byte形式为消息传递算法所拥有SecretKey secretKeynew SecretKeySpec(key,HmacSHA224);//实例化MacMac macMac.getInstance(secretKey.getAlgorithm());//初始化Macmac.init(secretKey);//执行消息摘要处理return mac.doFinal(data);}/*** HmacSHA224Hex消息摘要* param data 待做消息摘要处理的数据* param String 密钥* return byte[] 消息摘要* */public static String encodeHmacSHA224Hex(byte[] data,byte[] key) throws Exception{//执行消息摘要处理byte[] bencodeHmacSHA224(data,key);//做十六进制转换return new String(Hex.encode(b));}/*** 进行相关的摘要算法的处理展示* throws Exception * **/public static void main(String[] args) throws Exception {String strHmacMD5消息摘要;//初始化密钥byte[] key1MACCoder.initHmacMD5Key();//获取摘要信息byte[] data1MACCoder.encodeHmacMD5(str.getBytes(), key1);System.out.println(原文str);System.out.println();System.out.println(HmacMD5的密钥:key1.toString());System.out.println(HmacMD5算法摘要data1.toString());System.out.println();//初始化密钥byte[] key2MACCoder.initHmacSHA256Key();//获取摘要信息byte[] data2MACCoder.encodeHmacSHA256(str.getBytes(), key2);System.out.println(HmacSHA256的密钥:key2.toString());System.out.println(HmacSHA256算法摘要data2.toString());System.out.println();//初始化密钥byte[] key3MACCoder.initHmacSHAKey();//获取摘要信息byte[] data3MACCoder.encodeHmacSHA(str.getBytes(), key3);System.out.println(HmacSHA1的密钥:key3.toString());System.out.println(HmacSHA1算法摘要data3.toString());System.out.println();//初始化密钥byte[] key4MACCoder.initHmacSHA384Key();//获取摘要信息byte[] data4MACCoder.encodeHmacSHA384(str.getBytes(), key4);System.out.println(HmacSHA384的密钥:key4.toString());System.out.println(HmacSHA384算法摘要data4.toString());System.out.println();//初始化密钥byte[] key5MACCoder.initHmacSHA512Key();//获取摘要信息byte[] data5MACCoder.encodeHmacSHA512(str.getBytes(), key5);System.out.println(HmacSHA512的密钥:key5.toString());System.out.println(HmacSHA512算法摘要data5.toString());System.out.println();System.out.println(以下的算法支持是bouncycastle支持的算法sun java6不支持);//初始化密钥byte[] key6MACCoder.initHmacMD2Key();//获取摘要信息byte[] data6MACCoder.encodeHmacMD2(str.getBytes(), key6);String datahex6MACCoder.encodeHmacMD2Hex(str.getBytes(), key6);System.out.println(Bouncycastle HmacMD2的密钥:key6.toString());System.out.println(Bouncycastle HmacMD2算法摘要data6.toString());System.out.println(Bouncycastle HmacMD2Hex算法摘要datahex6.toString());System.out.println();//初始化密钥byte[] key7MACCoder.initHmacMD4Key();//获取摘要信息byte[] data7MACCoder.encodeHmacMD4(str.getBytes(), key7);String datahex7MACCoder.encodeHmacMD4Hex(str.getBytes(), key7);System.out.println(Bouncycastle HmacMD4的密钥:key7.toString());System.out.println(Bouncycastle HmacMD4算法摘要data7.toString());System.out.println(Bouncycastle HmacMD4Hex算法摘要datahex7.toString());System.out.println();//初始化密钥byte[] key8MACCoder.initHmacSHA224Key();//获取摘要信息byte[] data8MACCoder.encodeHmacSHA224(str.getBytes(), key8);String datahex8MACCoder.encodeHmacSHA224Hex(str.getBytes(), key8);System.out.println(Bouncycastle HmacSHA224的密钥:key8.toString());System.out.println(Bouncycastle HmacSHA224算法摘要data8.toString());System.out.println(Bouncycastle HmacSHA224算法摘要datahex8.toString());System.out.println();} } 控制台输出结果如下 原文HmacMD5消息摘要 HmacMD5的密钥:[B136228 HmacMD5算法摘要[B913750 HmacSHA256的密钥:[Bbfbdb0 HmacSHA256算法摘要[B3e86d0 HmacSHA1的密钥:[B253498 HmacSHA1算法摘要[B9fef6f HmacSHA384的密钥:[Bf38798 HmacSHA384算法摘要[B4b222f HmacSHA512的密钥:[Bb0f13d HmacSHA512算法摘要[Bae000d 以下的算法支持是bouncycastle支持的算法sun java6不支持 Bouncycastle HmacMD2的密钥:[B4741d6 Bouncycastle HmacMD2算法摘要[B337d0f Bouncycastle HmacMD2Hex算法摘要0fbabb3bb1a2be81fbc823013f6920fe Bouncycastle HmacMD4的密钥:[B1e0bc08 Bouncycastle HmacMD4算法摘要[B158b649 Bouncycastle HmacMD4Hex算法摘要a3fa5935ca554f83c8987efd2bcfe605 Bouncycastle HmacSHA224的密钥:[B8a0d5d Bouncycastle HmacSHA224算法摘要[B173831b Bouncycastle HmacSHA224算法摘要542d47250e5ff9f8bb3a7607799b1685a8accd65580410ea1d4dd578 五、总结   1、sun支持了5中算法但是不支持转成16进制但是可以用commons codec或者bouncycastle的16进制转换协助进行转换 2、bouncycastle支持补充了三种算法并支持16进制转换 转载于:https://my.oschina.net/biezhi/blog/394579
http://www.zqtcl.cn/news/234000/

相关文章:

  • 如何建立一家公司网站江苏网站推广公司
  • 城市管理如何宣传市建设网站cms软件有什么功能
  • 网站建设优势网站为什么吸引人
  • 域名如何做网站网站导读怎么做
  • 那些网站可以做问答免费设计室内装修app软件
  • 白银做网站视频制作软件下载安装
  • 商城网站建设最新报价现在网站建设的技术
  • 网站设计思路方案广东深圳软件开发公司
  • 企业网站可以免费做吗网站建设管理内容保障制度
  • 建立导购网站吴江区建设局网站
  • 东莞网站建设(信科分公司)青岛市北建设集团网站
  • 企业网站分类举例营销型网站建设市场
  • 自学app开发难吗长沙专业网站优化定制
  • 厦门做企业网站找谁wordpress4.7.10漏洞
  • 百科网站源码最好的免费logo设计网站
  • 北京做网站s如何做网站截流
  • 深圳摇号申请网站在线免费网站
  • 自己做网站用花钱吗广西建设四库一平台网站
  • 做网站建设一般多少钱做网站要买多少服务器空间
  • 天津网站优化哪家快惠民建设局网站是哪个
  • 大连做网站绍兴厂商商城网站数据库表关系设计
  • 公司网站制作第三方彭州做网站的公司
  • 青建设厅官方网站海省包装策划与设计专业
  • 中国城投建设集团网站手机网游
  • 通过音乐做网站外链企业所得税多少钱起征
  • 哪个网站系统做的好广州电子商城网站
  • 泉州模板建站定制成都网页设计培训机构
  • 个人微信公共号可以做微网站么免费产品推广软件
  • 建设银行瓶窑支行网站阿里域名官网
  • 宿迁网站seo中原建设信息网 网站