生成DES密钥、保存密钥到文件、从文件读取密钥、加密、解密等操作。
java 代码
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.security.InvalidKeyException;
- import java.security.Key;
- import java.security.NoSuchAlgorithmException;
- import java.security.SecureRandom;
- import java.security.Security;
- import java.security.spec.InvalidKeySpecException;
- import javax.crypto.Cipher;
- import javax.crypto.KeyGenerator;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.DESKeySpec;
- import org.apache.commons.configuration.ConfigurationException;
- import org.apache.commons.configuration.PropertiesConfiguration;
- import com.sun.crypto.provider.SunJCE;
-
- public class DESTest {
- private static final String ALGORITHM = "DES";
-
-
-
-
-
-
-
-
-
- public Key generateKey() throws EncryptException {
- try {
- Security.insertProviderAt(new SunJCE(), 1);
- KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);
- generator.init(new SecureRandom());
- Key key = generator.generateKey();
- return key;
- } catch (NoSuchAlgorithmException e) {
- throw new EncryptException(e);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public Cipher getCipher(Key key, int cipherMode) throws EncryptException {
- try {
- Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
- cipher.init(cipherMode, key);
- return cipher;
- } catch (Exception e) {
-
- throw new EncryptException("Generate Cipher occurs Exception.["
- + e.getMessage() + "]");
- }
- }
-
- public void saveKey(Key key, String filename) throws EncryptException {
- if (key == null) {
- return;
- }
-
- File file = new File(filename);
- try {
- file.createNewFile();
- } catch (IOException e1) {
- throw new EncryptException(e1);
- }
-
- try {
- PropertiesConfiguration publicConfig = new PropertiesConfiguration(
- filename);
- publicConfig.setProperty("Key", Utils.bytesToHexStr(key
- .getEncoded()));
- publicConfig.save();
- } catch (ConfigurationException e) {
- throw new EncryptException(e);
- }
- }
-
- public Key loadKey(String filename) throws EncryptException {
- try {
- PropertiesConfiguration config = new PropertiesConfiguration(
- new File(filename));
- String privateKeyValue = config.getString("Key");
-
- DESKeySpec dks = new DESKeySpec(Utils
- .hexStrToBytes(privateKeyValue));
-
- SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
- Key key = keyFactory.generateSecret(dks);
- return key;
- } catch (ConfigurationException e) {
- throw new EncryptException(e);
- } catch (NoSuchAlgorithmException e) {
- throw new EncryptException(e);
- } catch (InvalidKeyException e) {
- throw new EncryptException(e);
- } catch (InvalidKeySpecException e) {
- throw new EncryptException(e);
- }
- }
-
- public byte[] doEncrypt(Key key, byte[] data) throws EncryptException {
- try {
-
- Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
-
-
- cipher.init(Cipher.ENCRYPT_MODE, key);
-
- byte[] raw = cipher.doFinal(data);
-
-
- return raw;
- } catch (Exception e) {
- e.printStackTrace();
- throw new EncryptException("Do encrypt occurs Exception.["
- + e.getMessage() + "]");
- }
- }
-
- public byte[] doDecrypt(Key key, byte[] raw) throws EncryptException {
- try {
-
- Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
-
- cipher.init(Cipher.DECRYPT_MODE, key);
-
-
- byte[] data = cipher.doFinal(raw);
-
-
- return data;
- } catch (Exception e) {
- e.printStackTrace();
- throw new EncryptException("Do decrypt occurs Exception.["
- + e.getMessage() + "]");
- }
- }
-
- public static void main(String[] args) {
- DESTest bean = new DESTest();
- String keyFilename = "d:/key.txt";
- String srcFilename = "d:/temp/1.txt";
- String encryptFilename = "D:/temp/encrypt_result.dat";
- String decryptFilename = "D:/temp/decrypt_result.txt";
-
- Key key = bean.initKey(keyFilename);
- DESEncrypt encrypt = DESEncryptImpl.getInstance();
-
- try {
-
- System.out.println("encrypt begin ...");
- FileInputStream in = new FileInputStream(srcFilename);
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- byte[] tmpbuf = new byte[1024];
- int count = 0;
- while ((count = in.read(tmpbuf)) != -1) {
- bout.write(tmpbuf, 0, count);
- tmpbuf = new byte[1024];
- }
- in.close();
- byte[] orgData = bout.toByteArray();
- byte[] raw = encrypt.doEncrypt(key, orgData);
-
- OutputStream out = new FileOutputStream(new File(encryptFilename));
- out.write(raw);
- out.close();
- System.out.println("encrypt done ...");
-
-
- System.out.println("decrypt begin ...");
- in = new FileInputStream(encryptFilename);
- bout = new ByteArrayOutputStream();
- tmpbuf = new byte[1024];
- count = 0;
- while ((count = in.read(tmpbuf)) != -1) {
- bout.write(tmpbuf, 0, count);
- tmpbuf = new byte[1024];
- }
- in.close();
- orgData = bout.toByteArray();
- byte[] data = encrypt.doDecrypt(key, orgData);
- out = new FileOutputStream(new File(decryptFilename));
- out.write(data);
- out.flush();
- out.close();
- System.out.println("decrypt done ...");
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (EncryptException e) {
- e.printStackTrace();
- }
- }
-
-
-
-
- public Key initKey(String keyFilename) {
- DESControl control = DESControlImpl.getInstance();
- File keyFile = new File(keyFilename);
- Key key = null;
- try {
- if (!keyFile.exists()) {
- System.out.println("generate Key.");
- key = control.generateKey();
- control.saveKey(key, keyFilename);
- return key;
-
- } else {
- System.out.println("load Key.");
- key = control.loadKey(keyFilename);
- return key;
- }
- } catch (EncryptException e) {
- e.printStackTrace();
- }
- return key;
- }
- }
分享到:
相关推荐
使用java技术编写的Des加密/解密,的工具类,已亲测可完全正确使用,无bug
Java版标准3DES加密/解密方法,加密函数desedeEncoder(String paramString1, String key) 解密函数desedeDecoder(String dest, String key)
des 加密解密工具 1、将要 加密/解密 的密码 2、公钥 3、加密button 解密 botton 4、 加密或解密出来的结果
PHP 3DES加密/解密类,兼容支付宝、微信等。
DES加密/解密类成熟的加密解密类,适合项目开发,可以对于明文进行加密
DES加密/解密 BCB XE2平台编译测试通过 可直接加入程序使用 内含 字符串转化为二进制数、二进制数据转化为字符串 代码
DES加密/解密 java js 亲测,返回结果一样。 加密三次, 3des 加密后得到的内容是原来的四倍左右
des算法是从网上找的,里面有作者名称。 这里只说明PHP用法,ASP等其他用法雷同,不再复述。 $str="加密前字符串"; $mi=new COM("encryp.act"); $co=$mi->encode($str); echo($co);//输出加密后的字符串。 $co=$mi-...
对数据进行单DES或者3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密
java 3des加密、解密工具类 java的3DES加密/解密
java-des加密解密程序,基于java编写的des,3des加密程序,包括MAC校验,MD5校验等
最近做一个接口,与JAVA的关于DES/CBC/PKCS5Padding 互相解密。在网上找了很多资料,摸索了3天才摸索出来。同样的明文,用JAVA加密的密文死活都跟用DELPHI加密的不相等,有时候少于8个字符的就正常,多了8个字符的就...
(1)熟悉相应的DES加密/解密函数的使用,在单机完成对特定文件(test-1.txt)的单重DES加密/解密; (2)针对DES密钥特点(8字节,64比特位,其中真正起作用的为56比特位),设计一次一密的密钥产生机制(即每次...
对数据进行3DES加密或者解密,如果密码长度为8字节则为DES加密或者解密
java编写的一个关于des的加密算法 ...请输入您要加密的字符串:des加密算法 请输入您自己想要的密钥:des 加密前的字符:des加密算法 您输入的密钥:des 加密后的字符:decba59b42607d5e0da53909a2a359d4
一个调用动态链接库的des加密解密例子。
一、常用的加密/解密算法 1.Base64 严格来说Base64并不是一种加密/解密算法,而是一种编码方式。Base64不生成密钥,通过Base64编码后的密文就可以直接“翻译”为明文,但是可以通过向明文中添加混淆字符来达到...
DES加密/解密类。 加密 加密数据 解密 解密数据 得到随机安全码(哈希加密)。 得到随机哈希加密字符串 哈希加密一个字符串 RSA加密解密及RSA签名和验证 RSA 的密钥产生 产生私钥 和公钥 RSA 方式加密 RSA的解密...
MagicCrypt 是一个 Java/PHP/NodeJS/Rust 库,用于加密/解密字符串、文件或数据,使用数据加密标准 (DES) 或高级加密标准 (AES) 算法。它支持 CBC 分组密码模式、PKCS5 填充和 64、128、192 或 256 位密钥长度。
3DES加密解密的全工具类,快速帮助新人进行3Des加密解密