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

网站建设的五类成员学编程的培训机构

网站建设的五类成员,学编程的培训机构,外国购物网站大全,dell网站的网站设计特色1.对称加密算法定义#xff1a;数据发送方将原始数据和加密密钥经过特殊加密算法处理后#xff0c;将加密密文发送出去。接收方收到密文后#xff0c;需要使用加密用过的密钥及相同算法的逆算法对密文进行解密#xff0c;才能使其恢复成可读明文。 2.在对称加密算法中…1.对称加密算法定义数据发送方将原始数据和加密密钥经过特殊加密算法处理后将加密密文发送出去。接收方收到密文后需要使用加密用过的密钥及相同算法的逆算法对密文进行解密才能使其恢复成可读明文。 2.在对称加密算法中使用的密钥只有一个双方都使用这个密钥对数据进行加密和解密 常用的对称加密算法DES、3DESTripleDES和AES 常用的加密模式是ECB电子密码本模式、CBC加密分组链接模式 常用的填充方式是NoPadding不填充、Zeros填充0填充、PKCS5Padding填充 3.注意以下区别 3.1.不同的加密算法,其工作密钥不同且产生密钥工厂的算法名不同 DES有很多同胞兄弟如DESede(TripleDES)、AES大同小异 1密钥长度不同 DES固定工作密钥为8个字节共64位 AES固定工作密钥为16/24/32bytes。 2在产生密钥工厂时只要换掉ALGORITHM换成对应的值就行SecretKey secretKey new SecretKeySpec(key, ALGORITHM) 3.2加密模式不同初始化的随机也不同 ECB采用分组加密的方式将明文按8字节64位分组分别加密。 CBC的处理方式是先用初始向量IV对第一组加密再用第一组的密文作为密钥对第二组加密然后依次完成整个加密操作。如果明文中有两个分组的内容相同ECB会得到完全一样的密文但CBC则不会。 DES下的cbc模式下的pkcs5padding可以用初始向量IV加密也能用SecureRandom,但是aes必须用初始向量 在初始化向量参数时AES 为16bytes. DES 为8bytes. 3.3填充方式不同 如果没有指定默认的方式就是PKCS5Padding 大部分情况下明文并非刚好64位的倍数。对于最后一个分组如果长度小于64位则需要用数据填充至64位。 PKCS7Padding是缺几个字节就补几个字节的0 PKCS5Padding是缺几个字节就补充几个字节的几好比缺6个字节就补充6个字节的6 4.有可能出现的错误 1java.security.InvalidKeyException: Wrong key size工作密钥为8个字节共64位 2javax.crypto.BadPaddingException: Given final block not properly padded 原因是Cipher cipher Cipher.getInstance(DES); 等同于Cipher cipher Cipher.getInstance(DES/ECB/PKCS5Padding)一样填充方式错误加密的时候会得到16长度的字节数组。 /*简单Des算法加密解密使用ECB/NoPadding主要参数有工作密钥为8个字节共64位数据为8个字节共64位指定工作方式ECB/NoPadding且随机数用new SecureRandom()*/ public class DesEcbNopaddingSafety {public static void main(String[] args) {String data 12345678;String key 12345678;byte[] encryData encrydata(data, key);String encryD new Base64().encodeAsString(encryData);System.out.println(加密后的数据是 encryD);byte[] decodeD new Base64().decode(encryD);byte[] descryData bytedecryData(decodeD, key);String d new String(descryData);System.out.println(解密后的数据是 d);}private static byte[] bytedecryData(byte[] decodeD, String key) {// TODO Auto-generated method stubbyte[] deData null;try {SecretKeyFactory keyFactory SecretKeyFactory.getInstance(DES);DESKeySpec dks new DESKeySpec(key.getBytes());SecretKey securekey keyFactory.generateSecret(dks);Cipher cipher Cipher.getInstance(DES/ECB/NoPadding);SecureRandom random new SecureRandom();cipher.init(Cipher.ENCRYPT_MODE, securekey, random);deData cipher.doFinal(decodeD);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return deData;}private static byte[] encrydata(String data, String key) {// TODO Auto-generated method stubbyte[] encryData null;try {// 创建一个密钥工厂SecretKeyFactory keyfactory SecretKeyFactory.getInstance(DES);// 根据原始密钥数据创建密钥对象DESKeySpec使用 key 中的前 8 个字节作为 DES 密钥的密钥内容DESKeySpec dks new DESKeySpec(key.getBytes());// 在用密钥工厂把DESKeySpec变成规范的密钥对象SecretKeySecretKey securekey keyfactory.generateSecret(dks);// 生成一个可信任的随机数源SecureRandom random new SecureRandom();// 通过Cipher.getInstance()工厂方法来实例化密码对象。Cipher cipher Cipher.getInstance(DES/ECB/NoPadding);// 用密钥、算法参数和随机源初始化此Cipher密码对象cipher.init(Cipher.DECRYPT_MODE, securekey, random);// 执行加密encryData cipher.doFinal(data.getBytes());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return encryData;} }pre namecode classjava 加密后的数据是9ejp64Hyi3M 解密后的数据是12345678/*使用DES/CBC/PKCS5Padding加密且随机数用new IvParameterSpec(iv1)*/ public class DesCbcPkcs5Safety {public static void main(String[] args) {String data 1234578;String key 12345678;byte[] encryData encrydata(data, key);String encryD new Base64().encodeAsString(encryData);System.out.println(加密后的数据是 encryD);byte[] decodeD new Base64().decode(encryD);byte[] descryData bytedecryData(decodeD, key);String d new String(descryData);System.out.println(解密后的数据是 d);}private static byte[] bytedecryData(byte[] decodeD, String key) {// TODO Auto-generated method stubbyte[] deData null;try {SecretKeyFactory keyFactory SecretKeyFactory.getInstance(DES);DESKeySpec dks new DESKeySpec(key.getBytes());SecretKey securekey keyFactory.generateSecret(dks);Cipher cipher Cipher.getInstance(DES/CBC/PKCS5Padding);// 这里使用的是向量。采用此代码中的IVParameterSpecIvParameterSpec iv new IvParameterSpec(iv1);cipher.init(Cipher.DECRYPT_MODE, securekey, iv);deData cipher.doFinal(decodeD);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return deData;}private static byte[] encrydata(String data, String key) {// TODO Auto-generated method stubbyte[] encryData null;try {Cipher cipher Cipher.getInstance(DES/CBC/PKCS5Padding);SecretKeyFactory keyfactory SecretKeyFactory.getInstance(DES);SecretKey securekey keyfactory.generateSecret(new DESKeySpec(key.getBytes()));// 注意这里使用的是向量IvParameterSpec iv new IvParameterSpec(iv1);cipher.init(Cipher.ENCRYPT_MODE, securekey, iv);encryData cipher.doFinal(data.getBytes());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return encryData;}private static byte[] iv1 { (byte) 0x12, (byte) 0x34, (byte) 0x56,(byte) 0x78, (byte) 0x90, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF }; }加密后的数据是DXCyuKP3IWQ 解密后的数据是12345785.主要步骤如下 (1).利用SecretKeyFactory.getInstance(加密算法)创建密钥工厂 (2).用new DESKeySpec(原始密钥)产生密钥对象 (3).用密钥工厂的generateSecret(密钥对象)方法把密钥对象转换成规范的密钥对象 (4).用new SecureRandom()或者用 new IvParameterSpec(向量)生成一个可信任的随机数源 (5).用Cipher.getInstance(加密算法/加密模式/填充模式)产生加密解密对象 (6).用cipher.init(加密解密模型规范密钥随机数)初始化加密解密对象 (7).用cipher.doFinal(数据)执行加密解密操作
http://www.w-s-a.com/news/612472/

相关文章:

  • 网站建设制作定制免费网络短剧
  • 建设部建造师强制注销网站h5响应式网站模板下载
  • 蛋糕网站内容规划建设网站需要多少钱济南兴田德润o厉害吗
  • 企业如何建设网站呢做网站的高手
  • 为什么打开网址都是站长工具开发一款网站需要多少钱
  • 做一个网站app需要多少钱分类信息网站建设计划
  • 怎样下载建设部网站建模培训
  • 北流网站建设制作旅游网站开发目的和目标
  • 网站公司怎么做的网站建设论文二稿
  • 网站建设服务商都有哪些html项目答辩
  • 网站上传到万网主机wordpress视频防盗链
  • 西安建设商城类网站广告设计公司文案
  • 如何建设好高校网站麻辣烫配方教授网站怎么做
  • 宁波网站建设计品牌推广策略分析
  • 网站自建设需要买什么时候开始深圳市建筑市场信息公开平台
  • 平台营销型网站建设小城镇建设的网站文献
  • 燕郊个人做网站小企业网站模板
  • 网站ip需要备案新开河街做网站公司
  • 网站定制设计方案wordpress批量传图片
  • 做外贸兼职的网站设计福州网站开发私人
  • 金华建站模板目前国内有哪些网站做家具回收
  • 个人做网站还是公众号赚钱好部门网站建设和维护
  • 系列图标设计网站推荐建商城网站
  • 中牟建设工程信息网站黑龙江 哈尔滨
  • 网站设计基本结构wap自助建论坛网站
  • 专业番禺网站建设爱做网站外国
  • 深圳罗湖网站设计公司价格制作网站的公司办什么营业执照
  • 长清网站建设价格群辉NAS搭建wordpress
  • 变更股东怎样在工商网站做公示网站建设和网站优化哪个更重要
  • 西安手机网站python网站开发效率