`
sunbin
  • 浏览: 354532 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

字符串加密解密类

阅读更多


import javax.crypto.*;

import javax.crypto.spec.*;

import java.security.*;



public class EncryptData {



    DESedeKeySpec spec;

    SecretKeyFactory keyFactory;

    SecretKey theKey;

    Cipher cipher;

    IvParameterSpec IvParameters;



    public EncryptData() {

       byte[] encryptKey;

       try {

           // 检测是否有 TripleDES 加密的供应程序

           // 如无,明确地安装SunJCE 供应程序

           try {

              Cipher c = Cipher.getInstance("DESede");

           } catch (Exception e) {

              System.err.println("Installling SunJCE provider.");

              Provider sunjce = new com.sun.crypto.provider.SunJCE();

              Security.addProvider(sunjce);

           }

           // 创建一个密钥

           encryptKey = "This is a test DESede Key".getBytes();



           // 为上一密钥创建一个指定的 DESSede key

           spec = new DESedeKeySpec(encryptKey);



           // 得到 DESSede keys

           keyFactory = SecretKeyFactory.getInstance("DESede");



           // 生成一个 DESede 密钥对象

           theKey = keyFactory.generateSecret(spec);



           // 创建一个 DESede 密码

           cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");



           // 为 CBC 模式创建一个用于初始化的 vector 对象

           IvParameters = new IvParameterSpec(new byte[] { 12, 34, 56, 78, 90, 87, 65, 43 });

       } catch (Exception exc) {

           // 记录加密或解密操作错误

       }

    }



    private String encrypt(String password) {

       String encrypted_password = null;

       byte[] encrypted_pwd = null;



       try {

           // 以加密模式初始化密钥

           cipher.init(Cipher.ENCRYPT_MODE, theKey, IvParameters);



           // 加密前的密码(旧)

           byte[] plainttext = password.getBytes();



           // 加密密码

           encrypted_pwd = cipher.doFinal(plainttext);



           // 转成字符串,得到加密后的密码(新)

           encrypted_password = new String(encrypted_pwd);

       } catch (Exception ex) {

           // 记录加密错误

       }



       StringBuffer tempString = new StringBuffer();

       for (int i = 0; i < encrypted_pwd.length; i++) {

           tempString.append(encrypted_pwd[i] + ",");

       }



       String aa = new String(tempString);

       return aa;

    }



    private String decrypt(String spassword) {

       String[] ss = spassword.split(",");

       byte[] password = new byte[ss.length];

       for (int i = 0; i < ss.length; i++) {

           password[i] = (byte) (new Integer(ss[i]).intValue());

       }

       String decrypted_password = null;

       try {

           // 以解密模式初始化密钥

           cipher.init(Cipher.DECRYPT_MODE, theKey, IvParameters);



           // 构造解密前的密码

           byte[] decryptedPassword = password;



           // 解密密码

           byte[] decrypted_pwd = cipher.doFinal(decryptedPassword);

           // 得到结果

           decrypted_password = new String(decrypted_pwd);

       } catch (Exception ex) {

           // 记录解密错误

       }

       return decrypted_password;

    }



    /**

     * 加密算法

     * @param password   未加密的密码

     * @return           加密后的密码

     */

    public static String s_encrypt(String password) {

       String encrypted_pwd = null;

       EncryptData encryptData = new EncryptData();

       encrypted_pwd = encryptData.encrypt(password);

       return encrypted_pwd;

    }



    /**

     * 解密算法

     * @param password   加过密的密码

     * @return           解密后的密码

     */

    public static String b_decrypt(String password) {

       String decrypted_password = null;

       EncryptData encryptData = new EncryptData();

       decrypted_password = encryptData.decrypt(password);

       return decrypted_password;

    }



}

 

分享到:
评论

相关推荐

    一个字符串加密解密类

    根据给定的文件信息,我们可以总结出以下关于“一个字符串加密解密类”的详细知识点: ### 一、类概述 该类提供了一种简单的方法来对字符串进行加密和解密操作,适用于保护重要的数据(例如密码)。通过使用UTF-8...

    C#数据库连接字符串加密解密类

    .net下C#数据库连接字符串在配置文件中的加密解密类

    php字符串加密解密的类

    这个名为“php字符串加密解密的类”的工具提供了一种方法来处理敏感信息,确保它们在传输或存储时不会被未授权的用户访问。这里我们将深入探讨PHP中的字符串加密解密原理,以及base64_encode()函数在其中的作用。 ...

    C# Class 字符串加密解密类

    C# 字符串 加密解密 类 需要自定义8位ASCII密钥,如“12345678”

    c++字符串加密解密

    学习了C++中的字符串加密解密后,可以进一步研究其他加密算法,如AES、RSA等,或者了解非对称加密和哈希函数等信息安全相关的概念和技术。此外,也可以尝试将加密解密技术应用到实际项目中,如网络通信的安全传输、...

    QT C++ AES字符串加密解密类库,引入即可使用

    QT C++ AES字符串加密解密类库是一种在C++编程环境中使用QT框架实现的高级加密标准(AES)加密和解密工具。QT是一个流行的开源跨平台应用开发框架,广泛应用于桌面、移动和嵌入式系统。AES是目前广泛应用的对称加密...

    vb 简单字符串加密解密函数 避免乱码

    VBScript中的字符串加密解密函数 在VBScript(Visual Basic Script Edition)中,可以通过编写特定的函数来实现字符串的加密与解密操作。本例中提供的`encrypt`函数接受两个参数:`miyao`(密钥) 和 `stext`(待加密...

    js中对字符串加密解密算法

    js中对字符串加密解密算法

    EncryptTools 字符串 加密 解密 工具

    "EncryptTools 字符串 加密 解密 工具"是一个专为处理字符串加密和解密任务设计的实用程序。这个工具可能包含了多种加密算法,帮助用户对敏感的文本信息进行安全处理,防止未经授权的访问或窃取。 字符串加密是一种...

    字符串加密解密DLL链接库

    本加密目标完成短文本(100个字符内),并没有测试过大文本,长字符串的情况。 分3组: 第一组:不需要解密方事先获悉KEY。应用场景是程序把需要关键信息加密后保存在配置文件中,防止被第三人打开配置文件而获取信息...

    一套简单实用的字符串加密解密Demo(含源码)

    本资源提供了一套自编的字符串加密解密Demo,包含了源码,可以帮助开发者实现对重要信息的加密存储和安全传输。下面将详细介绍这套加密解密算法及其应用。 一、加密解密原理 加密是一种将明文转换为看似随机的不可...

    PB字符串加密、解密函数

    在IT行业中,字符串加密与解密是信息安全领域的重要组成部分,主要目的是保护数据的隐私和安全性。PowerBuilder(PB)是一种流行的编程环境,尤其在开发数据库应用程序时被广泛使用。在这个背景下,PB字符串加密和...

    MFC 加密解密字符串

    总之,MFC中的字符串加密和解密涉及到多种技术,包括但不限于对称加密(如AES)、非对称加密(如RSA)、哈希函数等。开发者应根据具体需求选择合适的加密算法,并合理管理密钥,确保数据的安全性。通过熟练掌握这些...

    字符串加密解密

    8. **字符串加密解密案例**:在提供的压缩包文件“字符串加密解密案例”中,可能包含具体的编程实现,如Python的cryptography库、Java的Cipher类或者JavaScript的crypto模块等,展示了如何在实际项目中应用上述理论...

    任意长度的字符串加密解密(DES)

    基于DES任意长度字符串的加密和解密,MFC界面

    WinForm字符串加密解密小程序

    在这个“WinForm字符串加密解密小程序”中,我们主要探讨的是如何在Windows Forms环境下实现字符串的加密与解密功能。 首先,字符串加密是信息安全领域的一个关键概念,其目的是保护数据不被未经授权的人员读取或...

    字符串加密解密工具

    在IT领域,字符串加密解密是信息安全的重要组成部分,主要用于保护数据的隐私性和完整性。字符串加密是一种将可读的明文字符串转化为不可读的密文,防止未经授权的访问者获取信息。解密则是加密的逆过程,将密文恢复...

    C#对字符串加密解密dll源码

    描述中提到的"C#对字符串加密解密dll源码"可能包含一个自定义的加密类库,这个库可能封装了加密和解密的逻辑,允许开发者通过简单调用方法并提供密钥来完成操作。在实际应用中,用户可能需要自定义密钥以增加安全性...

    PHP字符串加密和解密

    PHP字符串加密和解密,可以把字符串加密,还可以解密

    一个简单的字符串加密解密算法(C#)

    一个简单的字符串加密解密算法,使用C#语言实现。。。

Global site tag (gtag.js) - Google Analytics