des在线加解密(des解密工具怎么用)
怡怡给大家谈谈des在线加解密,以及des解密工具怎么用应用的知识点,希望对你所遇到的问题有所帮助。
des在线加解密(des解密工具怎么用)
des在线加解密(des解密工具怎么用)
des在线加解密(des解密工具怎么用)
1、快忘了 明天再告诉你为甚非要要 C++ 解密呢? Ja 加解密的有以前帮老师做过,不过是老师提供了一个 .DLL 加密接口,我用ja调用它加密,然后再用ja 解密,也就是说没有 C++ 加密实现代码。
2、至于 C++ 解密,由于 DES 加解密不依赖具体实现,也就是说不管是ja 还是 C++ 加密后的密文都应该是一样的,你另外再问一个题目求C++大虾们贴一个C++版本的解密程序应该不难的,反正也有的是分。
3、先给你一个 Ja 版本的加解密实现吧,代码全部来自于网络,现在整理了一下现在归还网络,就不单独发给你了:使用方法:try{DESCipher cipher= new DESCipher("password".getBytes());cipher.doDecrypt(cipher.doEncrypt("PlainText".getBytes()));}catch(Exceptione E){}/ ============================================================================= Copyright (c) 2008,Ren Ja Studio All rights reserved. ============================================================================= 文件名称:DESCipher.ja 文件标识:见配置管理书 摘 要:DES 数据加密程序 较前一个版本增加了文件加密流技术和3重DES加密技术 当前版本:3.0 作 者:Ren 完成日期:2008年5月13日 取代版本:2.0 作 者:Ren 完成日期:2007.4.29.=============================================================================/package common.ciphers.symmetry;public class DESCipherextends SymmetryCipher{/ ========================================================================= 默认构造器: 使用默认随机密钥 @exception Exception 如果系统没有安装此类密码机.=========================================================================/public DESCipher()throws Exception{super( null, "DES" );}/ ========================================================================= 用指定密钥构造DES密钥 @param pwd 指定 DES 密码 @exception Exception 如果系统没有安装此类密码机.=========================================================================/public DESCipher( byte[] pwd )throws Exception{super( pwd, "DES" );}/ ========================================================================= 本DES密码机的算法描述 @return String 本 DES 密码机的算法描述.=========================================================================/public String toString(){return "DES 密码机 Verison 3.0 Made By Ren"+ super.toString();}}package common.ciphers.symmetry;import ja.security.;import jax.crypto.;import jax.crypto.spec.SecretKeySpec;/ ============================================================================= Copyright (c) 2008,Ren Ja Studio All rights reserved. ============================================================================= 文件名称:SymmetryCipher.ja 文件标识:见配置管理书 摘 要:对称密码机之底层超类 当前版本:1.0 作 者:Ren 完成日期:2008年5月18日.=============================================================================/public class SymmetryCipher {/ 本密码机实现的算法 /protected final String algorithm;/ 客户指定的用于加解密的密码 /private byte[] password = null;/ 根据指定密码生成的秘密密钥 /private SecretKey secretKey = null;/ 系统的密码机 /private Cipher cipher = null;/ ========================================================================= 构造函数: 指定本密码机的实现的算法和加解密密码 @param pwd byte[] 客户指定的用于加解密的密码 @param algorithm String 本密码机实现的算法 @throws Exception 如果没有此算法的实现.=========================================================================/protected SymmetryCipher(byte[] pwd, String algorithm) throws Exception {//使用SUN公司提供的密码机ja.security.Security.addProvider(new com.sun.crypto.provider.SunJCE());this.algorithm = algorithm;initKey(pwd);cipher = Cipher.getInstance(algorithm);}/ ========================================================================= 根据客户提供的密码初始化本密码机的密钥信息 @param pwd byte[] 客户指定的密码 @throws Exception 如果没有此算法的实现.=========================================================================/private void initKey(byte[] pwd) throws Exception {if (pwd != null) {password = pwd;secretKey = this.usePwdGenSecretKey(password);} else {//客户没有指定密码时,那么系统生成一个随机密码password = this.genRandomSecretKey().getEncoded();secretKey = this.usePwdGenSecretKey(password);}}/ ========================================================================= 用本密码机的秘密密钥加密指定的明文信息 @param plainInfo byte[] 要求加密的明文信息 @return byte[] 加密后的信息 @throws Exception 加密过程出现错误.=========================================================================/public byte[] doEncrypt(byte[] plainInfo) throws Exception {cipher.init(Cipher.ENCRYPT_MODE, this.secretKey);return cipher.doFinal(plainInfo);}/ ========================================================================= 用指定 密码 加密指定明文信息 @param desKey DES 密码 @param plainInfo 要求加密的明文信息 @return byte[] 用指定密码加密明文后的信息 @exception ja.lang.Exception 如果系统没有安装此类密码机.=========================================================================/public byte[] doEncrypt(byte[] plainInfo, byte[] pwd) throws Exception {cipher.init(Cipher.ENCRYPT_MODE, this.usePwdGenSecretKey(pwd));return cipher.doFinal(plainInfo);}/ ========================================================================= 用本密码机的密码解密指定的密文信息 @param encryptedInfo byte[] 加过密的密文信息 @return byte[] 解密结果 @throws Exception 解密过程出现错误.=========================================================================/public byte[] doDecrypt(byte[] encryptedInfo) throws Exception {cipher.init(Cipher.DECRYPT_MODE, this.secretKey);return cipher.doFinal(encryptedInfo);}/ ========================================================================= 用指定密钥加密指定解密密文内容 @param desKey DES 密钥 @param encryptText DES 密文 @param byte[] 用指定密钥解密DES密文后的信息 @exception ja.lang.Exception 如果系统没有安装此类密码机.=========================================================================/public byte[] doDecrypt(byte[] encryptedInfo, byte[] pwd) throws Exception {cipher.init(Cipher.DECRYPT_MODE, this.usePwdGenSecretKey(pwd));return cipher.doFinal(encryptedInfo);}/ ========================================================================= 根据本密码机的算法生成一个随机密钥 @return SecretKey 生成的随机密钥 @throws Exception 如果系统没有此算法的实现.=========================================================================/public final SecretKey genRandomSecretKey() throws Exception {return genRandomSecretKey(this.algorithm);}/ ========================================================================= 根据指定的算法生成一把随机密钥 @param algorithm String 客户指定的算法 @return SecretKey 生成的随机密钥 @throws Exception 如果系统没有此算法的实现.=========================================================================/public final static SecretKey genRandomSecretKey(String algorithm) throwsException {KeyGenerator keygen = KeyGenerator.getInstance(algorithm);SecureRandom random = new SecureRandom();keygen.init(random);return keygen.generateKey();}/ ========================================================================= 用客户自己定义的 密码 根据本密码机的算法生成一个密钥信息 @param pwd byte[] 密码信息 @return SecretKey 根据密码生成的密钥信息. @exception Exception 如果系统没有安装此算法的实现.=========================================================================/public SecretKey usePwdGenSecretKey(byte[] pwd) throws Exception {return usePwdGenSecretKey(pwd, this.algorithm);}/ ========================================================================= 用客户自己定义的 密码 和客户定义的算法生成一个密钥信息 @param pwd byte[] 客户的密码 @param algorithm String 算法名 @return SecretKey 生成的秘密密钥 @throws Exception 如果系统没有安装此算法的实现.=========================================================================/public final static SecretKey usePwdGenSecretKey(byte[] pwd,String algorithm) throws Exception {SecureRandom random = new SecureRandom(pwd);KeyGenerator keygen = KeyGenerator.getInstance(algorithm);keygen.init(random);return keygen.generateKey();}/ ========================================================================= 以指定 密钥 字节信息生成一个本密码机指定的算法的秘密密钥 @param rawKeys byte[] 密钥字节信息 @return SecretKey 生成的密钥信息 @throws Exception 如果指定密钥不符合此算法规定的密钥规范.=========================================================================/public final SecretKey useKeyGenecretKey(byte[] rawKeys) throws Exception {return useKeyGenSecretKey(rawKeys, this.algorithm);}/ ========================================================================= 以指定 密钥 字节信息生成一个秘密密钥 @param rawKeys byte[] 密钥字节信息 @param algorithm 指定的算法 @return SecretKey 生成的密钥信息 @throws Exception 如果指定密钥不符合此算法规定的密钥规范.=========================================================================/public final static SecretKey useKeyGenSecretKey(byte[] rawKeys,String algorithm) throws Exception {return SecretKeyFactory.getInstance(algorithm).generateSecret(new SecretKeySpec(rawKeys, algorithm));}/ ========================================================================= 设置本密码机的密码,同时也会重新初始化密钥信息 @param pwd byte[] 客户指定的密码 @throws Exception 密码设置失败.=========================================================================/public void setPassword(byte[] pwd) throws Exception {initKey(pwd);}/ ========================================================================= 用指定的密码字节信息生成本密码机的秘密密钥 @param pwdKey byte[] 客户指定的密码信息 @throws Exception 如果本密码机未指定算法.=========================================================================/public void setSecretKeyAsBytes(byte[] pwdKey) throws Exception {this.setSecretKeyAsObj(this.usePwdGenSecretKey(pwdKey));}/ ========================================================================= 用秘密密钥指定本密码机的秘密密钥,对应的密码设置为空 @param sk SecretKey 客户指定的秘密密钥.=========================================================================/public void setSecretKeyAsObj(SecretKey sk) {this.secretKey = sk;password = null; //密码复位,知道密钥不能推知初始密码;}/ ========================================================================= 获取秘密密钥信息 @return SecretKey 秘密密钥.=========================================================================/public SecretKey getSecretKeyAsObj() {return secretKey;}/ ========================================================================= 获取当前密钥的字节信息 @return byte[] 密钥字节信息.=========================================================================/public byte[] getSecretKeyAsBytes() {if (secretKey != null) {return secretKey.getEncoded();}return null;}/ ========================================================================= 获取本密码机的算法 @return String 本密码机的算法.=========================================================================/public String getAlgorithm() {return this.algorithm;}/ ========================================================================= 获取客户指定的密码 @return byte[] 客户指定的密码.=========================================================================/public byte[] getPassword() {return password;}/ ========================================================================= 获取本密码机的算法描述 @return String 本密码机的算法描述.=========================================================================/public String toString() {return "本对称密码机实现之算法: " + this.algorithm;}}。
本文到这结束,希望上面文章对大家有所帮助。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。