java中常用的加密方式

一)对称加密-AES


高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位。
在应用方面,尽管DES在安全上是脆弱的,但由于快速DES芯片的大量生产,使得DES仍能暂时继续使用,为提高安全强度,通常使用独立密钥的三级DES(3des加密)。但是DES迟早要被AES代替。流密码体制较之分组密码在理论上成熟且安全,但未被列入下一代加密标准. 
java中aes的粗略实现:
1)创建加密对象
        AesDataRsaKeyCryptoStyle mInstance = new AesDataRsaKeyCryptoStyle();
2)初始化
        keyGen=KeyGenerator.getInstance("AES");
        keyGen.init(128);
        cipher=Cipher.getInstance(algorithmStr);
3)生成加密密匙
        Key key=new SecretKeySpec(keyBytes,"AES");
4)加密
        cipher.init(Cipher.ENCRYPT_MODE, key);
        encryptedText=cipher.doFinal(content);  


二)非对称加密算法-RSA


Rsa是常用的非对称加密算法一种,它需要两个密钥:公钥和私钥,公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。
java实现粗略加密流程: 
1)实例化Rsa mRsa = new Rsa()对象;
2)获取公钥:
            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PublicKey publicKey = keyFactory.generatePublic(keySpec);
3)进行加密:
            Cipher cipher = Cipher.getInstance(ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE, key);
            byte[] b = source.getBytes();
            byte[] b1 = cipher.doFinal(b);
            return new String(Base64.encodeBase64(b1), "GBK");


java实现粗略解密流程:
1)获取私匙:
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
2)用私匙解密:
            Cipher cipher = Cipher.getInstance(ALGORITHM);
            cipher.init(Cipher.DECRYPT_MODE, key);
            byte[] b1 = Base64.decodeBase64(cryptograph.getBytes());
            byte[] b = cipher.doFinal(b1);
            return new String(b);


三)3DES加密
3des加密(对称加密),又称为Triple DES加密,它不是一种新的块加密算法,它相当于对数据块进行了3次Des加密,每条密匙长度为56位。三条密匙K1、K2、K3决定了算法的安全性,若三个密钥互不相同,本质上就相当于用一个长为56*3位的密钥进行加密。多年来,它在对付强力攻击时是比较安全的。若数据对安全性要求不那么高,K1可以等于K3。在这种情况下,密钥的有效长度为112位.
加密流程如下:
      1)实例化加密对象TripleDes  mInstance = new TripleDes();
      2)使用指定的key来生成证书的公钥和随机源初始化生成的实例
            SecureRandom mSecureRandom = new SecureRandom();
            DESedeKeySpec dks = new DESedeKeySpec(key);
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES3_ALGORITHM);
            SecretKey mSecurekey = keyFactory.generateSecret(dks);
            mCipher = Cipher.getInstance(DES3_ALGORITHM);
      3)使用TripleDes加密数据
4)在数据交互过程中,3des加密后的数据有时会出现空格,为了数据的完整性,最好将加密后的数据进行Base64处理后进行传输。

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值