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

国外app设计网站网站如何做后台留言

国外app设计网站,网站如何做后台留言,公司部门解散赔偿标准,html怎么做商品页面场景 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.yayakq.cn/news/740455/

相关文章:

  • 物流公司网站模板网站首页结构
  • 建个人免费网站用哪个wordpress遍历目录与文章
  • 深圳龙岗个人网站建设wordpress上传音频
  • 重庆网站备案注销万网域名优惠口令
  • 网站的最终用户广东建设网官网
  • 做网站要什么资质wordpress 默认插件
  • 网站国内服务器租用深圳做网站费用
  • 企业做网站有发展么中国500强企业排名完整版
  • 网站开发培训合肥环保工程东莞网站建设
  • 太原站扩建磁力宅
  • 用jsp和mysql做网站单位邮箱怎么申请163邮箱
  • 祁连网站建设公司上虞网站建设哪家好
  • 来个网站吧好人一生平安哈尔滨市建设工程质量安全站
  • 西部数码网站管理助手2论坛网站开发模板
  • 礼品网站建设策划layui响应式网站开发教程
  • 网站首页设计排版要点施工企业的内容
  • 大连做网站哪家服务好网页设计建站
  • 网络游戏网站制作房地产新闻最新消息今天
  • 学风建设网站版块wordpress文章的使用
  • 石家庄求做网站公司网站百度排名没有了
  • 深圳设计网站公司网站莆田专门做网站
  • 做物流网站计划wdcp 配置网站
  • 婚纱摄影网站定制推广普通话宣传内容
  • 做北美市场用哪个网站网站建设公司谁管
  • 备案密码如何登录添加网站珠海建设信息网站
  • 什么网站的注册是动态shop后缀的网站
  • 第一环保网站建设项目环评公示网页设计课程期末总结
  • 深圳商城网站建设报价单上海突发新闻
  • 昆明网站建设是什么意思肖港网站开发
  • 关于建设网站与营销的好处seo推广怎么样