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

做外贸需掌握的网站福州网站建设找百诚互联

做外贸需掌握的网站,福州网站建设找百诚互联,wordpress 短码,做财经类新闻的网站目录定义常用对称加密算法DES3DESAESPEB常用对称加密算法的java实现DES实现3DES实现AES实现PEB实现定义 原文通过加密秘钥生成密文#xff0c;密文通过解密秘钥得到原文。 对于加密秘钥和解密秘钥是相同的算法#xff0c;就叫对称加密算法。 常用对称加密算法 DES Data E… 目录定义常用对称加密算法DES3DESAESPEB常用对称加密算法的java实现DES实现3DES实现AES实现PEB实现定义 原文通过加密秘钥生成密文密文通过解密秘钥得到原文。 对于加密秘钥和解密秘钥是相同的算法就叫对称加密算法。 常用对称加密算法 DES Data Encryption Standard 初代对称加密算法 从98年开始不断被破解到现在已经完全不具备安全性了。 现在基本没人用了但很值得学习。 秘钥长度56位 3DES 由于DES算法长度不够衍生出2重DES算法3重DES算法4重DES算法等。 用的最多的是3重DES算法。 3重DES秘钥长度增加迭代次数增加。 秘钥长度112或168默认168。 AES 由于3DES效率有些低所以又有了AES加密算法。 AES是目前使用最多的对称加密算法。而且至今未被破解。 常用于移动通信系统加密和一些基于SSH协议的软件SSH Client、secureCRT。 AES秘钥长度128或192或256默认128。 额外注意用JDK的实现中使用256位秘钥需要获得无政府限制权限文件美国政府的限制所以一般场景不用。 PEB PBEpassword based encryption基于口令的加密算法。 PBE算法其实是对之前的AES、DES的包装升级。 口令一般是用户自己创建管理的。为了防止暴力破解要对口令进行加盐操作。 常用的PEB算法 PBEWithMD5AndDES秘钥长度56位 PBEWithMD5AndTripleDES秘钥长度112、168位默认168位 PBEWithSHA1AndDESede秘钥长度112、168位默认168位 PBEWithSHA1AndRC2_40秘钥长度40~1024位8的倍数默认128位 常用对称加密算法的java实现 DES实现 import org.apache.commons.codec.binary.Hex;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom;/*** Author: zhangshuai* Date: 2020-04-22 22:38* Description:**/ public class DESTest {public static void main(String[] args) throws Exception {String name hello word;String password getPassword(); // String password 1122334455667788;System.out.println(秘钥password);byte[] encrypt encrypt(name.getBytes(), password);String encryptString Hex.encodeHexString(encrypt);System.out.println(秘钥加密后的密文encryptString);byte[] decodeHex Hex.decodeHex(encryptString.toCharArray());byte[] decrypt decrypt(decodeHex, password);System.out.println(秘钥解密后的明文new String(decrypt));}/*** 获取随机秘钥*/public static String getPassword() throws NoSuchAlgorithmException {KeyGenerator keyGenerator KeyGenerator.getInstance(DES);keyGenerator.init(56);SecretKey secretKey keyGenerator.generateKey();byte[] keyEncoded secretKey.getEncoded();return Hex.encodeHexString(keyEncoded);}/*** 加密*/public static byte[] encrypt(byte[] datasource, String password) {try{SecureRandom random new SecureRandom();DESKeySpec desKey new DESKeySpec(password.getBytes());//密匙工厂SecretKeyFactory keyFactory SecretKeyFactory.getInstance(DES);SecretKey securekey keyFactory.generateSecret(desKey);//Cipher对象实际完成加密操作Cipher cipher Cipher.getInstance(DES);//用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, securekey, random);//现在获取数据并加密//正式执行加密操作return cipher.doFinal(datasource);}catch(Throwable e){e.printStackTrace();}return null;}/*** 解密*/public static byte[] decrypt(byte[] src, String password) throws Exception {// DES算法要求有一个可信任的随机数源SecureRandom random new SecureRandom();// 创建一个DESKeySpec对象DESKeySpec desKey new DESKeySpec(password.getBytes());// 密匙工厂SecretKeyFactory keyFactory SecretKeyFactory.getInstance(DES);// 将DESKeySpec对象转换成SecretKey对象SecretKey securekey keyFactory.generateSecret(desKey);// Cipher对象实际完成解密操作Cipher cipher Cipher.getInstance(DES);// 用密匙初始化Cipher对象cipher.init(Cipher.DECRYPT_MODE, securekey, random);// 解密return cipher.doFinal(src);} } 3DES实现 import org.apache.commons.codec.binary.Hex;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec; import java.security.Key; import java.security.NoSuchAlgorithmException;public class Test3DES {public static void main(String[] args) throws Exception {String name hello word;byte[] password getPassword();System.out.println(秘钥 Hex.encodeHexString(password));byte[] encrypt encrypt(name.getBytes(), password);String encryptString Hex.encodeHexString(encrypt);System.out.println(秘钥加密后的密文 encryptString);byte[] decodeHex Hex.decodeHex(encryptString.toCharArray());byte[] decrypt decrypt(decodeHex, password);System.out.println(秘钥解密后的明文 new String(decrypt));}/*** 获取随机秘钥*/public static byte[] getPassword() throws NoSuchAlgorithmException {KeyGenerator keyGenerator KeyGenerator.getInstance(DESede);keyGenerator.init(168);SecretKey secretKey keyGenerator.generateKey();byte[] keyEncoded secretKey.getEncoded();return keyEncoded;}/*** 秘钥转换为DESede专用密钥*/private static Key getSecretKey(byte[] key) {try {DESedeKeySpec deSedeKeySpec new DESedeKeySpec(key);SecretKeyFactory factory SecretKeyFactory.getInstance(DESede);Key secretKey factory.generateSecret(deSedeKeySpec);return secretKey;} catch (Exception ex) {ex.printStackTrace();}return null;}/*** 加密*/public static byte[] encrypt(byte[] datasource, byte[] password) {try {Cipher cipher Cipher.getInstance(DESede/ECB/PKCS5Padding);// 创建密码器cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password));// 初始化为加密模式的密码器byte[] result cipher.doFinal(datasource);// 加密return result;} catch (Exception ex) {ex.printStackTrace();}return null;}/*** 解密*/public static byte[] decrypt(byte[] src, byte[] password) {try {// 实例化Cipher cipher Cipher.getInstance(DESede/ECB/PKCS5Padding);cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password));byte[] result cipher.doFinal(src);return result;} catch (Exception ex) {ex.printStackTrace();}return null;} } AES实现 import org.apache.commons.codec.binary.Hex;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.Key; import java.security.NoSuchAlgorithmException;public class TestAES {public static void main(String[] args) throws Exception {String name hello word;byte[] password getPassword();System.out.println(秘钥 Hex.encodeHexString(password));byte[] encrypt encrypt(name.getBytes(), password);String encryptString Hex.encodeHexString(encrypt);System.out.println(秘钥加密后的密文 encryptString);byte[] decodeHex Hex.decodeHex(encryptString.toCharArray());byte[] decrypt decrypt(decodeHex, password);System.out.println(秘钥解密后的明文 new String(decrypt));}/*** 获取随机秘钥*/public static byte[] getPassword() throws NoSuchAlgorithmException {KeyGenerator keyGenerator KeyGenerator.getInstance(AES);keyGenerator.init(128);SecretKey secretKey keyGenerator.generateKey();byte[] keyEncoded secretKey.getEncoded();return keyEncoded;}/*** 获取专用密钥*/private static Key getSecretKey(byte[] key) {try {return new SecretKeySpec(key, AES);} catch (Exception ex) {ex.printStackTrace();}return null;}/*** 加密*/public static byte[] encrypt(byte[] datasource, byte[] password) {try {Cipher cipher Cipher.getInstance(AES/ECB/PKCS5Padding);// 创建密码器cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password));// 初始化为加密模式的密码器byte[] result cipher.doFinal(datasource);// 加密return result;} catch (Exception ex) {ex.printStackTrace();}return null;}/*** 解密*/public static byte[] decrypt(byte[] src, byte[] password) {try {// 实例化Cipher cipher Cipher.getInstance(AES/ECB/PKCS5Padding);cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password));byte[] result cipher.doFinal(src);return result;} catch (Exception ex) {ex.printStackTrace();}return null;}PEB实现 import org.apache.commons.codec.binary.Hex;import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEParameterSpec; import java.security.Key; import java.security.SecureRandom;public class TestPBE {public static void main(String[] args) throws Exception {String name hello word;String password 123456;System.out.println(秘钥 password);PBEParameterSpec salt getSalt();byte[] encrypt encrypt(name.getBytes(), password, salt);String encryptString Hex.encodeHexString(encrypt);System.out.println(秘钥加密后的密文 encryptString);byte[] decrypt decrypt(encrypt, password, salt);System.out.println(秘钥解密后的明文 new String(decrypt));}/*** 获取专用密钥*/private static Key getSecretKey(String password) {try {PBEKeySpec pbeKeySpec new PBEKeySpec(password.toCharArray());SecretKeyFactory factory SecretKeyFactory.getInstance(PBEWITHMD5andDES);return factory.generateSecret(pbeKeySpec);} catch (Exception ex) {ex.printStackTrace();}return null;}/*** 获取盐*/private static PBEParameterSpec getSalt() {SecureRandom secureRandom new SecureRandom();byte[] salt secureRandom.generateSeed(8);// 100次加盐迭代return new PBEParameterSpec(salt, 100);}/*** 加密*/public static byte[] encrypt(byte[] datasource, String password, PBEParameterSpec salt) {try {Cipher cipher Cipher.getInstance(PBEWITHMD5andDES);// 创建密码器cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(password), salt);// 初始化为加密模式的密码器byte[] result cipher.doFinal(datasource);// 加密return result;} catch (Exception ex) {ex.printStackTrace();}return null;}/*** 解密*/public static byte[] decrypt(byte[] src, String password, PBEParameterSpec salt) {try {// 实例化Cipher cipher Cipher.getInstance(PBEWITHMD5andDES);cipher.init(Cipher.DECRYPT_MODE, getSecretKey(password), salt);byte[] result cipher.doFinal(src);return result;} catch (Exception ex) {ex.printStackTrace();}return null;}
http://www.zqtcl.cn/news/826179/

相关文章:

  • 网站点击率原因学php到做网站要多久
  • 哪里有创建网站的长沙网站seo技巧
  • 影楼公共网站wordpress提交360
  • 哪有做网站东莞中堂网站建设
  • 什么叫域名访问网站网络运营管理
  • 深圳网络推广网站泰安网站建设公司
  • 淄博网站建设铭盛信息如何注册一个app平台
  • 深圳网站的建设维护公司成功的网站必须具备的要素
  • wordpress主题站主题小型企业网站的设计与实现
  • 长沙专门做网站公司怎么进入网站管理页面
  • 做网站企业的发展前景东莞免费企业网站模板推广
  • 国外做锅炉的网站wordpress批量提交表单
  • 浙江省建设科技推广中心网站兼职做网站这样的网站
  • 网站开发前端培训最有设计感的网站
  • 巢湖有没有专门做网站的公司深圳 网站设计公司价格
  • 信息图表设计网站站长工具使用方法
  • 建站赔补用python做网站优点
  • 个人免费域名空间建站淄博网络公司全网推广
  • 企业信息年报系统南昌做seo的公司
  • 门户网站开发模板动漫设计与制作设计课程
  • vip网站怎么做有关设计的网站
  • wordpress网站第一次打开慢那个网站做视频没有水印
  • 做外贸英语要什么网站网站整体设计风格
  • 高端网站开发哪里好2022最新新闻素材摘抄
  • 网站建设实训个人深圳做营销网站的公司哪家好
  • 广州seo网站策划wordpress关闭主题提示
  • 做门票售卖网站怎么制作自己的水印
  • 网站绑定两个域名怎么做跳转asp 网站后台
  • 百度网站怎么做的赚钱吗郑州资助app下载
  • 成都成华区网站建设天津网站优