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

青岛开发区建网站公司免费下载安卓软件

青岛开发区建网站公司,免费下载安卓软件,网站的百度地图怎么做的,怎样自己做代刷网站jdk默认带了一些常见的加解密方式#xff0c;当我们常见的加解密不能满足时#xff0c;就需要用到一些第三方的库了#xff0c;bouncycastle就是其中一种。 但是bouncycastle文档比较少。简单介绍一下写法 1.导入依赖 dependencygroupIdorg.bouncycastle当我们常见的加解密不能满足时就需要用到一些第三方的库了bouncycastle就是其中一种。 但是bouncycastle文档比较少。简单介绍一下写法 1.导入依赖 dependencygroupIdorg.bouncycastle/groupIdartifactIdbcprov-jdk15on/artifactIdversion1.69/version/dependency 2.写代码 常见的有两种方式一种使用BouncyCastleProvider另一种使用BlockCipherEngine BouncyCastleProvider使用方式跟原生jdk类似多数getInstance的地方指定一下provider就行 BouncyCastleProvider方式DES加解密代码如下 package com.vvvtimes.demo.util.endecrypt;import lombok.extern.slf4j.Slf4j; import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import java.security.Key; import java.security.NoSuchAlgorithmException;Slf4j public class BcDesUtil {private static final BouncyCastleProvider provider;//BouncyCastle与JDK加解密类区别//KeyFactory.getInstance(RSA); provider--KeyFactory.getInstance(RSA, provider)//Cipher.getInstance(RSA); provider--Cipher.getInstance(RSA, provider)//Signature.getInstance(SHA1withRSA); provider--Signature.getInstance(SHA1withRSA, provider);//KeyGenerator.getInstance(DES) ; provider--KeyGenerator.getInstance(DES, provider); 或者KeyGenerator.getInstance(DES,BC)/*** 偏移变量固定占8位字节*/private final static String IV_PARAMETER 12345678;/** 生成key*/public byte[] generateKey() {KeyGenerator keyGenerator null;try {keyGenerator KeyGenerator.getInstance(DES,provider);keyGenerator.init(56);SecretKey secretKey keyGenerator.generateKey();byte[] encoded secretKey.getEncoded();return encoded;} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}/*** 生成key** param password 密钥字符串* return 密钥对象* throws Exception*/private static Key convertKey(byte[] password) throws Exception {DESKeySpec dks new DESKeySpec(password);SecretKeyFactory keyFactory SecretKeyFactory.getInstance(DES,provider);return keyFactory.generateSecret(dks);}/*** DES加密*/public static byte[] encrypt(byte[] data, byte[] password) {if (password null || password.length 8) {throw new RuntimeException(加密失败key不能小于8位);}if (data null)return null;try {Key secretKey convertKey(password);Cipher cipher Cipher.getInstance(DES/CBC/PKCS5Padding,provider);IvParameterSpec iv new IvParameterSpec(IV_PARAMETER.getBytes(utf-8));cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);byte[] bytes cipher.doFinal(data);return bytes;} catch (Exception e) {e.printStackTrace();return data;}}/*** DES解密解密字符串*/public static byte[] decrypt(byte[] data, byte[] password) {if (password null || password.length 8) {throw new RuntimeException(加密失败key不能小于8位);}if (data null)return null;try {Key secretKey convertKey(password);Cipher cipher Cipher.getInstance(DES/CBC/PKCS5Padding,provider);IvParameterSpec iv new IvParameterSpec(IV_PARAMETER.getBytes(utf-8));cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);byte[] bytes cipher.doFinal(data);return bytes;} catch (Exception e) {e.printStackTrace();return data;}}/*** byte数组转十六进制** param bytes* return*/public static String byte2HexString(byte[] bytes) {StringBuilder hex new StringBuilder();if (bytes ! null) {for (Byte b : bytes) {hex.append(String.format(%02X, b.intValue() 0xFF));}}return hex.toString();}//测试public static void main(String[] args) throws Exception {String source admin测试信息1234!#$%^*()_;System.out.println(原 文: source);String password lw1121902023;byte[] encryptDataBytes encrypt(source.getBytes(utf-8), password.getBytes(utf-8));String encryptData byte2HexString(encryptDataBytes);System.out.println(加密后: encryptData);byte[] decryptDataBytes decrypt(encryptDataBytes, password.getBytes(utf-8));String decryptData new String(decryptDataBytes, utf-8);;System.out.println(解密后: decryptData);}static {provider new BouncyCastleProvider();} }BlockCipherEngine方式的DES加解密代码如下 package com.vvvtimes.demo.util.endecrypt;import org.bouncycastle.crypto.BlockCipher; import org.bouncycastle.crypto.BufferedBlockCipher; import org.bouncycastle.crypto.InvalidCipherTextException; import org.bouncycastle.crypto.engines.DESEngine; import org.bouncycastle.crypto.modes.CBCBlockCipher; import org.bouncycastle.crypto.paddings.PKCS7Padding; import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher; import org.bouncycastle.crypto.params.DESParameters; import org.bouncycastle.crypto.params.ParametersWithIV; import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException;public class BcDesEngineUtil {private final static BlockCipher engine;private static final BouncyCastleProvider provider;/*** 偏移变量固定占8位字节*/private final static String IV_PARAMETER 12345678;/*** 生成key** param password 密钥字符串* return 密钥对象* throws Exception*/private static byte[] convertKeyEncoded(byte[] password) {byte[] result null;try {DESKeySpec dks new DESKeySpec(password);SecretKeyFactory keyFactory SecretKeyFactory.getInstance(DES,provider);SecretKey secretKey keyFactory.generateSecret(dks);return secretKey.getEncoded();} catch (InvalidKeyException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (InvalidKeySpecException e) {e.printStackTrace();}return result;}private static byte[] encrypt( byte[] ptBytes,byte[] key) throws InvalidCipherTextException, UnsupportedEncodingException {BufferedBlockCipher cipher new PaddedBufferedBlockCipher(new CBCBlockCipher(engine), new PKCS7Padding());cipher.init(true, new ParametersWithIV(new DESParameters(key), IV_PARAMETER.getBytes(utf-8)));byte[] rv new byte[cipher.getOutputSize(ptBytes.length)];int tam cipher.processBytes(ptBytes, 0, ptBytes.length, rv, 0);cipher.doFinal(rv, tam);return rv;}private static byte[] decrypt( byte[] cipherText,byte[] key) throws InvalidCipherTextException, UnsupportedEncodingException {BufferedBlockCipher cipher new PaddedBufferedBlockCipher(new CBCBlockCipher(engine), new PKCS7Padding());cipher.init(false, new ParametersWithIV(new DESParameters( key),IV_PARAMETER.getBytes(utf-8)));byte[] rv new byte[cipher.getOutputSize(cipherText.length)];int tam cipher.processBytes(cipherText, 0, cipherText.length, rv, 0);cipher.doFinal(rv, tam);return rv;}/*** byte数组转十六进制** param bytes* return*/public static String byte2HexString(byte[] bytes) {StringBuilder hex new StringBuilder();if (bytes ! null) {for (Byte b : bytes) {hex.append(String.format(%02X, b.intValue() 0xFF));}}return hex.toString();}//测试public static void main(String[] args) throws Exception {String source admin测试信息1234!#$%^*()_;System.out.println(原 文: source);String password lw1121902023;//String password geffzhan;//String password lw112190;byte[] keyEncoded convertKeyEncoded(password.getBytes(utf-8));byte[] encryptDataBytes encrypt(source.getBytes(utf-8), keyEncoded);String encryptData byte2HexString(encryptDataBytes);System.out.println(加密后: encryptData);byte[] decryptDataBytes decrypt(encryptDataBytes, keyEncoded);String decryptData new String(decryptDataBytes, utf-8);;System.out.println(解密后: decryptData);/**原 文: admin测试信息1234!#$%^*()_加密后: 1D5C21B694A9085A69BE7EA37C197D1632239545298613B944C3AC272750A519F66FB43EFEC55C89解密后: admin测试信息1234!#$%^*()_*/}static {engine new DESEngine();provider new BouncyCastleProvider();}}3.其他示例 AES加解密 package com.vvvtimes.demo.util.endecrypt;import lombok.extern.slf4j.Slf4j; import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.AlgorithmParameters; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidParameterSpecException;Slf4j public class BcAesUtil {private static final BouncyCastleProvider provider;/*** 偏移变量固定占8位字节*/private final static String IV_PARAMETER 1234567890123456;/*** AES加密*/public static byte[] encrypt(byte[] data, byte[] password, byte[] iv) {if (data null)return null;try {Key secretKey new SecretKeySpec(password,AES);Cipher cipher Cipher.getInstance(AES/CBC/PKCS7Padding,provider);AlgorithmParameters generateIV generateIV(iv);cipher.init(Cipher.ENCRYPT_MODE, secretKey, generateIV);byte[] bytes cipher.doFinal(data);return bytes;} catch (Exception e) {e.printStackTrace();return data;}}/*** AES解密解密字符串*/public static byte[] decrypt(byte[] data, byte[] password, byte[] iv) {if (data null)return null;try {Key secretKey new SecretKeySpec(password,AES);Cipher cipher Cipher.getInstance(AES/CBC/PKCS7Padding,provider);AlgorithmParameters generateIV generateIV(iv);cipher.init(Cipher.DECRYPT_MODE, secretKey, generateIV);byte[] bytes cipher.doFinal(data);return bytes;} catch (Exception e) {e.printStackTrace();return data;}}public static AlgorithmParameters generateIV(byte[] iv){AlgorithmParameters params null;try {params AlgorithmParameters.getInstance(AES);params.init(new IvParameterSpec(iv));} catch (NoSuchAlgorithmException | InvalidParameterSpecException e) {e.printStackTrace();}return params;}/*** byte数组转十六进制** param bytes* return*/public static String byte2HexString(byte[] bytes) {StringBuilder hex new StringBuilder();if (bytes ! null) {for (Byte b : bytes) {hex.append(String.format(%02X, b.intValue() 0xFF));}}return hex.toString();}//测试public static void main(String[] args) throws Exception {String source admin测试信息1234!#$%^*()_;System.out.println(原 文: source);String password passwordpassword;byte[] encryptDataBytes encrypt(source.getBytes(utf-8), password.getBytes(utf-8),IV_PARAMETER.getBytes(utf-8));String encryptData byte2HexString(encryptDataBytes);System.out.println(加密后: encryptData);byte[] decryptDataBytes decrypt(encryptDataBytes, password.getBytes(utf-8),IV_PARAMETER.getBytes(utf-8));String decryptData new String(decryptDataBytes, utf-8);System.out.println(解密后: decryptData);}static {provider new BouncyCastleProvider();} }RSA私钥解密 签名 package com.vvvtimes.demo.util.endecrypt;import cn.hutool.core.codec.Base64; import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import java.nio.charset.Charset; import java.security.*; import java.security.spec.PKCS8EncodedKeySpec;public class BcRsaUtil {private static final BouncyCastleProvider provider;private static PrivateKey getPrivateKey(String pkcs8Key) {byte[] pkcs8Keybytes Base64.decode(pkcs8Key.getBytes(Charset.forName(UTF-8)));final PKCS8EncodedKeySpec pkcs8EncodedKeySpec new PKCS8EncodedKeySpec(pkcs8Keybytes);try {return KeyFactory.getInstance(RSA, provider).generatePrivate(pkcs8EncodedKeySpec);} catch (Exception ex) {ex.printStackTrace();return null;}}/*** RSA私钥解密** param inputByte 待解密字节数组* param pkcs8Key 私钥* return 明文*/public static byte[] decrypt(byte[] inputByte, String pkcs8Key) {byte[] outputeByte null;try {PrivateKey privateKey getPrivateKey(pkcs8Key);//RSA解密Cipher cipher Cipher.getInstance(RSA, provider);cipher.init(Cipher.DECRYPT_MODE, privateKey);outputeByte cipher.doFinal(inputByte);} catch (NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException | NoSuchAlgorithmException e) {e.printStackTrace();}return outputeByte;}public static byte[] sign(final byte[] array, String pkcs8Key) {try {PrivateKey privateKey getPrivateKey(pkcs8Key);final Signature instance Signature.getInstance(SHA1withRSA, provider);instance.initSign(privateKey);instance.update(array);return instance.sign();} catch (GeneralSecurityException ex) {throw new RuntimeException(License Server installation error 0000000F2, ex);}}static {provider new BouncyCastleProvider();} }实际上bouncycastle还支持部分国密算法这一部分不用自己写实现了。
http://www.zqtcl.cn/news/673111/

相关文章:

  • 优秀网站网址郑州无痛人流哪家医院好
  • 备案网站能打开吗大良营销网站建设流程
  • 哪些网站可以做淘宝店招石油网站编辑怎么做
  • 网站出现建设中集团网站建设特点
  • asp网站开发 pdf企业展厅设计公司盛世笔特
  • 怎么创建网站 免费的免费开源的网站系统
  • 中山精品网站建设资讯网页设计师就业趋势
  • 网站建设哪家好 万维科技wordpress广告公司模板
  • 如何选择建网站公司网站页面html静态化
  • 建设银行网站入口网页设计培训 周末双休
  • 做企业网站建设的公司为什么企业网站不是开源系统
  • 网站客户端怎么做的做汽车脚垫版的网站
  • 做数学题挣钱的网站广西建筑特种作业证件查询官网
  • 汉字叔叔花了多少钱做网站免费原创视频素材
  • 网站开发提现功能互联网推广工作好做吗
  • 做阿里渠道的销售要有哪些网站网站评论怎么做的
  • 建设中网站如何上传图片深圳营销型网站建设设计公司
  • 建设电商网站需要多少钱家具网页设计素材
  • 物流网站html5模板网站整站开发
  • 网站随机代码网站开发技术试验教程
  • 做翻译 网站吗仿京东电商的网站开发报价
  • 霞山网站建设公司网站开发怎样手机号验证
  • 大型门户网站建设苏州优化网站建设
  • 网站步骤怎么搭建个人网站
  • 荥阳网站建设公司wordpress会员上限
  • 采购需求网站建设呼伦贝尔网站开发
  • 东莞网站建设方案服务极速网站建设定制价格
  • 网站建设费记账福州百度网络推广
  • 中国农村建设网站邵阳房产网
  • 做非法网站网站上海备案查询