关闭

Java加密入门

975人阅读 评论(0) 收藏 举报

加密算法的分类:

1.对称加密 DES,AES

2.非对称加密 RSA, DSA, 

3.单向加密 MD5, SHA

对称加密的特点:

    1.双方使用相同的密钥,解密方事先必须知道加密密钥

    2. 加密时使用什么密钥,解密时必须使用相同的密钥

    3. 对同样的信息,使用不同的密钥,加密结果理论上不相同

    在DES中,使用了一个56位的密钥以及附加的8为奇偶校验位,惨升最大64位的分组大小。攻击DES,一般只能使用穷举的密钥搜索,即重复尝试各种密钥直到有一个符合为止。

    3DES,即三重DES,是DES的加强版,也是DES的一个更安全的变形,它使用了3条56位的密钥对数据进行三次加密,一般情况下,提供较强的安全性。

    加密步骤:

1.指明机密算法的提供机构

Security.addProvider(new com.sun.crypto.provider.SunJce());

2. 实例化一个密钥生成器

KeyGenerator keygen = KeyGenerator.getInstance("DESede");

3.生成密钥

SecretKey desKey = keygen.generateKey();

4.定义一个Cipher对象,用他来加密、解密

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

5. 对Cipher对象初始化,指明密钥,加密/解密模式

c.init( Cipher.ENCRYPT_MODE, deskey);

6. 加密需要将明文转换成byte流

byte[] src = msg.getBytes();

byte[] enc = c.doFinal();

7.输出加密信息,字节流转换成字符串 String result = String(enc);


非对称机密:

    在非对称加密算法过程中,接受方产生一个公开密钥和一个私有密钥,前者公开,发送方将明文用接收方的公开密钥进行处理,变成米问发送出去,接收方接到密文后,使用自己的私有密钥堆密文解密,恢复为明文。

    加密过程和解密过程几乎和DES类似,只是在生成密钥的时候,生成一对密钥,公钥用于加密,私钥用于解密。

KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");

KeyPairGen.initizlize(1024);

KeyPair keyPair = KeyPairGen.generateKeyPair();

RSAPrivateKey privateKey = (RSAPrivateKey)keyPair.getPrivate();

RSAPublicKey publickey = (RSAPublicKey)keyPair.getPublic();


单向加密算法的特点:

1. 加密算法对同一消息反复执行该函数总得到相同的定义

2. 加密算法生成的密文是不可预见的,密文看起来和明文没有任何关系

3. 明文的任何微小变化都会对生成的密文产生很大的影响

4. 具有不可逆性

步骤:

1. 根据MD5算法生成MessageDigest对象

2. 更新摘要

3. 完成哈希计算,得到结果

SHA加密和MD5是一样的。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:726141次
    • 积分:7859
    • 等级:
    • 排名:第2747名
    • 原创:133篇
    • 转载:35篇
    • 译文:7篇
    • 评论:118条
    声明
    本博客乃学习笔记,没有纯粹无意义的转载。作者除了对自己负责,不对任何读者负责。欢迎指出文章错误,如果原意交朋友,可以通过Gmail联系我(mingxinglai#gmail.com),博客基本不再更新,欢迎访问我的独立博客http://mingxinglai.com
    文章分类
    最新评论