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

长春建站公众号电商电商网站建设

长春建站公众号,电商电商网站建设,深圳建站公司 企网站,线上营销课程哪里学AES 简介:DES 全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS) AES 密码学中的高级加密标准(Advan…

AES 简介:DES 全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS)
AES 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。

AES的区块长度固定为128位,密钥长度则可以是128 bit,192 bit 或256位 bit 。换算成字节长度,就是密码必须是 16个字节,24个字节,32个字节。AES密码的长度更长了,破解难度就增大了,所以就更安全。

1 引入依赖

Java SE自带的加解密工具包不支持AES/CBC/PKCS7Padding。

  <dependency><groupId>org.bouncycastle</groupId><artifactId>bcpkix-jdk15on</artifactId><version>1.69</version></dependency>

在加密算法中(如DES,AES,RSA),数据是分块加密的(为什么要分块,因为整块加密数据量有可能太大)。分块的话,就得按照一定的长度即block_size来分,大多数加密算法中的分块大小默认都是64bits,即8个字节,block_size=8。如果需要加密的数据(明文)的字节码的长度不是块大小的整数倍,那么就需要在末尾进行填充。

PKCS7Padding 是一种填充模式。

2 加密

AES加密的五种模式

  • ECB(Electronic Codebook Book) 电码本模式
    将明文分成若干段相同的小段, 不足补齐, 然后依次对每一小段进行加密后输出密文. ECB模式的弱点在于, 相同的明文会产生相同的密文, 容易遭到字典攻击, 安全性不够高

  • CBC(Cipher Block Chaining) 密码分组链接模式
    先明文切分成若干小段, 每一小段与初始块或者上一段的密文段进行异或运算后, 再与密钥进行加密, 这样做的目的是增强破解难度. 相对于ECB模式来说, CBC模式较安全, 同时CBC适合于传输长度较长的报文

  • CTR(Counter) 计算器模式
    在CTR模式中有一个自增的算子, 这个算子用密钥加密之后的输出和明文异或的结果得到密文, 相当于一次一密. 这种加密方式简单快速安全可靠, 而且可以并行加密. 但是在计算器不能维持很长的情况下, 密钥只能使用一次

  • CFB(Cipher FeedBack) 密码反馈模式

  • OFB(Output FeedBack) 输出反馈模式

  public static String encryptAesCbcPad7(String key, String text) throws Exception {try {Security.addProvider(new BouncyCastleProvider());Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");IvParameterSpec ivspec = new IvParameterSpec(key.getBytes(StandardCharsets.UTF_8));cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);byte[] original = cipher.doFinal(text.getBytes(StandardCharsets.UTF_8));return HexBin.encode(original, false);} catch (Exception e) {throw new IOException("encrypt password[" + text + "] by key[" + key + "] fail [" + e.getMessage() + "]");}}

解密

  public static String decryptAesCbcPad7(String key, String password) throws Exception {try {Security.addProvider(new BouncyCastleProvider());byte[] pbytes = HexBin.decode(password);Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");IvParameterSpec ivspec = new IvParameterSpec(key.getBytes(StandardCharsets.UTF_8));cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);byte[] original = cipher.doFinal(pbytes);return new String(original, StandardCharsets.UTF_8).trim();} catch (Exception e) {throw new IOException("decrypt password[" + password + "] by key[" + key + "] fail [" + e.getMessage() + "]");}}

测试

    public static void main(String args[]) throws Exception {String test = "早起的年轻人";//16位的密钥String key = "****************";//执行加密操作String data = encryptAesCbcPad7(key,test);System.out.println("加密后:"+data);//执行解密操作String s = decryptAesCbcPad7(key,data);System.out.println("解密后:"+s);}

执行结果:

加密后:47711B0351B24E6A14C02CE95E8E672A1F3E386E6807D9D7BE34E6AE1C0BDBD1
解密后:早起的年轻人
http://www.yayakq.cn/news/800086/

相关文章:

  • 企业网站建设 法规谷歌商店下载不了软件
  • 推荐成都网站建设友链外链app
  • 怎么用网站的二级目录做排名wordpress jitpecj插件
  • 商业网站建设目标wordpress取分类名称
  • html5响应式网站源码wordpress获取摘要
  • 山东网站建设优化技术广告流量投放
  • 新手做网站如何赚钱wordpress博客主题手机
  • dede免费网站模板下载网页界面设计想法
  • 一家专门做原型的网站爱用建站正规吗
  • 汕头网站搭建多少钱北京封闭最新消息
  • 百度网盘怎么提取别人资源百度seo算法
  • 网站功能模块 分析网站开发专员招聘
  • HTML可以做彩票网站吗岳阳网警
  • 做网站多少流量可以做广告互联网设计院
  • 个人网站如何在工信部备案网页设计实训报告心得体会
  • 南通外贸网站建设广西房地产网站建设
  • 视频网站怎么做可以播放电视剧网站轮播动态图如何做
  • 网站推广赚钱吗网络推广做哪个网站比较好
  • 大连市城市建设管理局网站discuz仿wordpress
  • 龙胜做网站的公司wordpress改页脚
  • 如何制作自己公司网站怎么用模板做网站
  • 成都网站建设公司有哪些手机百度高级搜索入口
  • 如何创建百度网站seo优化工作怎么样
  • 福州网站优化公司怎么判断网站有没有做百度商桥
  • 网站建设杭州缘择低价网站运营seo
  • 张艺兴粉丝做的网站百度小程序在哪里打开
  • ks3c ks4c做网站网站开发实例百度云
  • 高端网站开发 金蝶网站建设和管理是教什么科目
  • 西宁微信网站建设成都网站seo
  • 虚拟主机手机网站展台设计搭建服务