`
yjhexy
  • 浏览: 332334 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

JAVA 机密机制探究(JCA)——密钥加密对称算法

阅读更多

 

 

/**
 * 私钥加密的对称算法
 * 
 * @author yajun.wuyj
 */
public class PrivateExample {
    public static void main(String[] args) throws Exception {

        String text = "世界平衡";

        byte[] plainText = text.getBytes("UTF8");

        //通过KeyGenerator形成一个key
        System.out.println("\nStart generate AES key");
        KeyGenerator keyGen = KeyGenerator.getInstance("AES");

        keyGen.init(128);
        Key key = keyGen.generateKey();
        System.out.println("Finish generating DES key");

        //获得一个私鈅加密类Cipher,ECB是加密方式,PKCS5Padding是填充方法
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        System.out.println("\n" + cipher.getProvider().getInfo());

        //使用私鈅加密
        System.out.println("\nStart encryption:");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] cipherText = cipher.doFinal(plainText);
        System.out.println("Finish encryption:");
        System.out.println(new String(cipherText, "UTF8"));

        System.out.println("\nStart decryption:");
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] newPlainText = cipher.doFinal(cipherText);
        System.out.println("Finish decryption:");

        System.out.println(new String(newPlainText, "UTF8"));
    }

}

 

其中KeyGenerator是专门生成密钥的类。区别于KeyPairGenerator生成的是密钥对。

通过他的getInstance可以获取如下的算法需要的Key。

KeyGenerator

The following algorithm names can be specified when requesting an instance of KeyGenerator:

 

  • AES

     

  • ARCFOUR/RC4

     

  • Blowfish

     

  • DES

     

  • DESede

     

  • HmacMD5

     

  • HmacSHA1

     

  • HmacSHA256

     

  • HmacSHA384

     

  • HmacSHA512

     

  • RC2

 

Cipher.getInstance() 参数可以用一下形式的参数

 

  • "algorithm/mode/padding"

     

  • "algorithm"

 

mode 模式详见:http://www.cnblogs.com/happyhippy/archive/2006/12/23/601353.html

 

或者官方一点的:http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

 

padding 填充模式详见:http://www.cnblogs.com/midea0978/articles/1437257.html

具体所有已经可以用的algorithm详见官方网站:

http://java.sun.com/javase/6/docs/technotes/guides/security/SunProviders.html

 

分享到:
评论

相关推荐

    JAVA 加密算法(很好的算法,经典摘要)

    在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者提供了丰富的加密工具和算法。下面将详细讨论几种经典的Java加密算法。 1. 对称...

    Java 的IDEA 加密算法加密和数字签名编程

    DES使用56位密钥加密64位明文,输出64位密文。尽管DES在历史上曾经被穷举攻击成功破解,但在Java环境中,鉴于其强大的安全性和网络处理能力,IDEA加密算法成为了更优的选择。 #### 三、IDEA数据加密算法 ##### 3.1...

    Java各种加密算法的原理优缺点详解含示例代码(值得珍藏)

    Java中的加密算法是保障信息安全的关键技术,涉及到对称加密、非对称加密、哈希函数以及数字签名等多种方法。在日常生活中,无论是个人还是企业,都需要处理大量的敏感数据,如个人信息、财务信息和商业机密。加密...

    Java加密和数字签名编程 Java

    1. JCA与JCE:Java Cryptography Architecture提供了接口和框架,用于实现各种加密算法,而Java Cryptography Extension则提供了一些高级加密服务,包括非对称加密、对称加密、哈希函数和消息认证码等。 2. 对称...

    java 加密解密

    1. RSA算法:非对称加密算法,由两个密钥组成——公钥和私钥。公钥用于加密,私钥用于解密。这种方式常用于安全通信,如HTTPS协议。 2. AES算法:高级加密标准,对称加密算法,速度快,适用于大量数据的加密。AES有...

    JAVA加密解密2

    - RSA是一种非对称加密算法,它基于两个密钥——公钥和私钥,公钥用于加密,私钥用于解密。 - `java.security.KeyPairGenerator`用于生成密钥对,`Cipher`类处理加密和解密操作。 - RSA常用于数据的完整性保护和...

    【免费下载!】AES,ECC,SHA-256的简单实现(java,调库)

    2)Java Cryptography Architecture (JCA): 用于实现对称加密算法(如AES)和SHA-256哈希算法等,提供主流密码学算法的支持。 支持的数据类型 系统支持以下文件类型的加密和解密: 1)文本文件(.txt): 对文本内容...

    Art of Cryptography in Java

    Java通过JCA提供了一整套加密框架,它包含JCE(Java Cryptography Extension)和JSSE(Java Secure Socket Extension)。JCE提供加密、解密、消息摘要等功能,JSSE则负责SSL/TLS协议,实现安全网络通信。 3. Java...

    java实现数字签名

    - **混合加密算法**:结合对称加密与非对称加密的优点,使用非对称加密传输对称加密的密钥,之后使用对称加密进行数据加密,既保证了安全性又提高了效率。 ##### 2. 数字签名技术 - **基本原理**:通过使用发送方...

    RSA公共类.zip

    总的来说,这个"RSA公共类.zip"提供的类库是实现RSA加密解密功能的基础组件,对于理解RSA算法以及在Java项目中安全地使用非对称加密非常有帮助。开发者可以将这些类集成到他们的系统中,以确保数据在传输或存储时的...

    cipher:执行加密或解密的算法

    JCA是Java平台的一部分,提供了一组接口和类来实现各种加密操作,包括对称加密、非对称加密、消息摘要和数字签名等。JCE是JCA的扩展,提供了更强大的加密功能,支持更高级别的密钥长度,这对于商业和政府级别的安全...

    Java安全性编程指南(PDG).rar

    - **加密**:包括对称加密(如AES)和非对称加密(如RSA),用于保护数据的机密性。 - **消息认证码(MAC)**:用于验证数据完整性,防止篡改。 - **数字签名**:利用非对称加密技术确保数据的来源可验证和完整性...

    基于Java的两个通用安全模块的设计与实现(源代码+论文).zip

    JCE则提供了更高级别的加密功能,包括非对称加密和哈希算法。使用这些工具,开发者可以实现数据的加密存储、传输,以及校验数据完整性,防止数据被篡改。 此外,项目可能还涉及到了Java的Secure Socket Layer/...

    jce_policy-1_4_2

    2. **加密算法**:JCE支持多种加密算法,如对称加密(AES、DES、3DES)、非对称加密(RSA、DSA、ECC)、哈希算法(MD5、SHA-1、SHA-256)以及消息认证码(HMAC)等。 3. **密钥管理**:JCE提供了KeyGenerator和...

    RSA-Android:使用RSA算法对数据进行非对称加密和解密 。加密使用公钥,解密使用私钥; 签名使用私钥,验证使用公钥(对长文本也能加密成功)

    1. 源代码文件:用于实现RSA算法的Java类,可能包括密钥生成、加密、解密、签名和验证的方法。 2. 示例数据:可能有一些测试用的数据,用于演示加密和解密的效果。 3. 测试脚本:用于验证算法正确性的自动化测试代码...

    dhbw_cryptography

    8. **Java Cryptography Architecture (JCA)**:这是Java平台提供的一个框架,用于支持各种加密算法和服务,包括密钥生成、加密、解密、签名、认证等。 9. **Java Cryptography Extension (JCE)**:JCE是Java平台的...

    bonus-rsa2

    2. **Java加密API(JCA)**:Java提供了丰富的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),支持各种加密算法,包括RSA。开发者可以通过`java.security.KeyPairGenerator...

    VIC:用Java完成的VIC编码和解码视图

    在Java中实现VIC编码和解码,意味着开发者可能使用了Java提供的加密库,如Java Cryptography Extension (JCE) 或者Java Cryptography Architecture (JCA),来执行这些操作。 【描述】提到"维也纳国际中心",这可能...

    cryptographie

    描述中提到的“JLA的使用”,可能是对Java Cryptography Architecture (JCA)或Java Cryptography Extension (JCE)的简称,这两个是Java平台提供的用于加密操作的核心框架。JCA提供了各种加密服务,如密码算法、密钥...

    Crypto2:Coursera密码学第二题I课程

    2. **非对称加密**:非对称加密使用一对密钥——公钥和私钥。信息可以用公钥加密,然后用私钥解密,反之亦然。RSA和ECC(椭圆曲线加密)是非对称加密的两个重要例子。这种加密方式在安全通信中至关重要,如HTTPS协议...

Global site tag (gtag.js) - Google Analytics