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

建设局发公告的网站磁力屋torrentkitty

建设局发公告的网站,磁力屋torrentkitty,java web网站开发模板,合肥网站开发建设场景 AndroidJava中使用Aes对称加密的工具类与使用: AndroidJava中使用Aes对称加密的工具类与使用_霸道流氓气质的博客-CSDN博客 上面讲的Java与安卓进行数据传输时使用AES加解密的示例工具类。 如果Java需要与其他第三方平台比如Winform程序进行数据传递时也需…

场景

Android+Java中使用Aes对称加密的工具类与使用:

Android+Java中使用Aes对称加密的工具类与使用_霸道流氓气质的博客-CSDN博客

上面讲的Java与安卓进行数据传输时使用AES加解密的示例工具类。

如果Java需要与其他第三方平台比如Winform程序进行数据传递时也需要

数据加解密。

AES

AES(高级加密标准:Advanced Encryption Standard)加密是一种对称的加密方式,用来替代原先的DES。

AES支持三种长度的密钥: 128位,192位,256位

平时大家所说的AES128,AES192,AES256,实际上就是指AES算法对不同长度密钥的使用。

三种密钥的区别:

从安全性来看,AES256安全性最高。从性能看,AES128性能最高。本质原因是它们的加密处理轮数不同。

本文采用AES的ECB模式进行加密,填充方式为PKCS5Padding,加密的密码必须为16位。编码方式统一使用UTF-8。

关于加密模式与填充模式不再详解,可自行学习,只需保证Java与Winform中对应即可。

Java AES加密中的ECB加密模式对应于C#中的System.Security.Cryptography.CipherMode.ECB模式;

Java中的PKCS5Padding填充方式,对应于C#中的System.Security.Cryptography.PaddingMode.PKCS7;

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi 

实现

1、Java中进行加解密的流程与上面博客中一致

引入依赖

        <!-- Aes加密--><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk16</artifactId><version>1.46</version></dependency>

新建工具类

​
import org.apache.tomcat.util.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.util.Random;/*** AES加、解密算法工具类*/
public class AesUtils {/*** 加密算法AES*/private static final String KEY_ALGORITHM = "AES";/*** key的长度,Wrong key size: must be equal to 128, 192 or 256* 传入时需要16、24、36*/private static final Integer KEY_LENGTH = 16 * 8;/*** 算法名称/加密模式/数据填充方式* 默认:AES/ECB/PKCS5Padding*/private static final String ALGORITHMS = "AES/ECB/PKCS5Padding";/*** 后端AES的key,由静态代码块赋值*/public static String key = "badaodechengxvyu";static {key = getKey();}/*** 获取key*/public static String getKey() {StringBuilder uid = new StringBuilder();//产生16位的强随机数Random rd = new SecureRandom();for (int i = 0; i < KEY_LENGTH / 8; i++) {//产生0-2的3位随机数int type = rd.nextInt(3);switch (type) {case 0://0-9的随机数uid.append(rd.nextInt(10));break;case 1://ASCII在65-90之间为大写,获取大写随机uid.append((char) (rd.nextInt(25) + 65));break;case 2://ASCII在97-122之间为小写,获取小写随机uid.append((char) (rd.nextInt(25) + 97));break;default:break;}}return uid.toString();}/*** 加密** @param content    加密的字符串* @param encryptKey key值*/public static String encrypt(String content, String encryptKey) throws Exception {//设置Cipher对象Cipher cipher = Cipher.getInstance(ALGORITHMS,new BouncyCastleProvider());cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), KEY_ALGORITHM));//调用doFinalbyte[] b = cipher.doFinal(content.getBytes(StandardCharsets.UTF_8));// 转base64return Base64.encodeBase64String(b);}/*** 解密** @param encryptStr 解密的字符串* @param decryptKey 解密的key值*/public static String decrypt(String encryptStr, String decryptKey) throws Exception {//base64格式的key字符串转bytebyte[] decodeBase64 = Base64.decodeBase64(encryptStr);//设置Cipher对象Cipher cipher = Cipher.getInstance(ALGORITHMS,new BouncyCastleProvider());cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), KEY_ALGORITHM));//调用doFinal解密byte[] decryptBytes = cipher.doFinal(decodeBase64);return new String(decryptBytes);}
}​

加解密测试

    public static void main(String[] args) {/*        String sjkey = getKey();System.out.println("获得随机key:" + sjkey);*///16位String key = "badaodechengxvyu";//字符串String str = "霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主";try {//加密String encrypt = encrypt(str, key);//解密String decrypt = decrypt(encrypt, key);System.out.println("加密前:" + str);System.out.println("加密后:" + encrypt);System.out.println("解密后:" + decrypt);} catch (Exception e) {e.printStackTrace();}}

测试结果

 

2、Winform中也新建工具类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;namespace WinformStudyDemo.com.badao.utils
{class AESUtils{private static string key = "badaodechengxvyu";// AES 加密public static string encrypt(string str){if (string.IsNullOrEmpty(str)) return null;Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);RijndaelManaged rm = new RijndaelManaged{Key = Encoding.UTF8.GetBytes(key),Mode = CipherMode.ECB,Padding = PaddingMode.PKCS7};ICryptoTransform cTransform = rm.CreateEncryptor();Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return Convert.ToBase64String(resultArray, 0, resultArray.Length);}// AES 解密public static string decrypt(string str){if (string.IsNullOrEmpty(str)) return null;Byte[] toEncryptArray = Convert.FromBase64String(str);RijndaelManaged rm = new RijndaelManaged{Key = Encoding.UTF8.GetBytes(key),Mode = CipherMode.ECB,Padding = PaddingMode.PKCS7};ICryptoTransform cTransform = rm.CreateDecryptor();Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);return Encoding.UTF8.GetString(resultArray);}}
}

注意与上面Java一致的key

然后进行加解密测试

            //字符串String str = "https://blog.csdn.net/BADAO_LIUMANG_QIZHI";try{//加密String encrypt = com.badao.utils.AESUtils.encrypt(str);//解密String decrypt = com.badao.utils.AESUtils.decrypt(encrypt);Console.WriteLine("加密前:" + str);Console.WriteLine("加密后:" + encrypt);Console.WriteLine("解密后:" + decrypt);}catch (Exception exeception){Console.WriteLine(exeception.Message);}

测试结果

 

3、经过对比结果一致

均为

加密前:https://blog.csdn.net/BADAO_LIUMANG_QIZHI
加密后:hI/PIG/+rNC9OOqeqSILf4txnymyEAWa5FUVtBMYvNDlkpxgShSB44FKbh1HkvVg
解密后:https://blog.csdn.net/BADAO_LIUMANG_QIZHI

http://www.hrbkazy.com/news/3240.html

相关文章:

  • 网站建设市场前景关键词有哪几种
  • 上海中学门户网站登陆媒介星软文平台官网
  • 个人网站建设需求说明书最佳bt磁力猫
  • 哪个视频网站做直播销售郑州众志seo
  • 胶州网站建设公司爱网站查询挖掘工具
  • 深圳 SEO 网站建设 哪里学搜索引擎推广简称
  • 北京大兴区住房和城乡建设委员会网站网络营销活动策划方案模板
  • 国内网站建设建设适合发朋友圈的营销广告
  • 国外网站怎么做引流宁波网站推广优化公司怎么样
  • 做网站配什么绿色好看些百度关键词优化多久上首页
  • 专业网站定制哪家好html网页制作案例
  • 如何创建微网站成都网站快速排名提升
  • 响应式网站设计稿网络建设推广
  • 音乐介绍网站怎么做的廊坊seo管理
  • 个人网站建设与实现优化营商环境发言稿
  • 化妆品网站的建设 论文网络运营推广
  • asp网站新闻置顶成都疫情最新消息
  • 武平县天恒建设投资集团公司网站北京疫情最新消息
  • dw怎么把网站做的漂亮就业seo好还是sem
  • 哪个平台视频资源多seo网络培训
  • 免费wap自助建站火星建站苏州百度推广公司地址
  • 中国郑州建设信息网站短视频广告投放平台
  • flash动画制作网页福州seo推广服务
  • 天津网站设计 河西百度推广没有一点效果
  • 广州联享网站建设公司怎么样搜索引擎优化的具体措施
  • 网站seoapp国内优秀个人网站欣赏
  • 宁波住房与城乡建设部网站公司网站制作费用
  • 做网站主流技术怎么做蛋糕
  • WordPress如何建小语种网站怎么在腾讯地图上添加自己的店铺
  • 怎么制作免费网站广州seo服务外包