java RSA 加解密

Python08

java RSA 加解密,第1张

import java security Key

import java security KeyFactory

import java security KeyPair

import java security KeyPairGenerator

import java security PrivateKey

import java security PublicKey

import java security interfaces RSAPrivateKey

import java security interfaces RSAPublicKey

import java security spec PKCS EncodedKeySpec

import java security spec X EncodedKeySpec

import javax crypto Cipher

import sun misc BASE Decoder

import sun misc BASE Encoder

public class RSACoder {

/**

* 得到公钥

* @param key 密钥字符串(经过base 编码)

* @throws Exception

*/

public static PublicKey getPublicKey(String key) throws Exception {

byte[] keyBytes

keyBytes = (new BASE Decoder()) decodeBuffer(key)

X EncodedKeySpec keySpec = new X EncodedKeySpec(keyBytes)

KeyFactory keyFactory = KeyFactory getInstance( RSA )

PublicKey publicKey = keyFactory generatePublic(keySpec)

return publicKey

}

/**

* 得到私钥

* @param key 密钥字符串(经过base 编码)

* @throws Exception

*/

public static PrivateKey getPrivateKey(String key) throws Exception {

byte[] keyBytes

keyBytes = (new BASE Decoder()) decodeBuffer(key)

PKCS EncodedKeySpec keySpec = new PKCS EncodedKeySpec(keyBytes)

KeyFactory keyFactory = KeyFactory getInstance( RSA )

PrivateKey privateKey = keyFactory generatePrivate(keySpec)

return privateKey

}

/**

* 得到密钥字符串(经过base 编码)

* @return

*/

public static String getKeyString(Key key) throws Exception {

byte[] keyBytes = key getEncoded()

String s = (new BASE Encoder()) encode(keyBytes)

return s

}

public static void main(String[] args) throws Exception {

KeyPairGenerator keyPairGen = KeyPairGenerator getInstance( RSA )

//密钥位数

keyPairGen initialize( )

//密钥对

KeyPair keyPair = keyPairGen generateKeyPair()

// 公钥

PublicKey publicKey = (RSAPublicKey) keyPair getPublic()

// 私钥

PrivateKey privateKey = (RSAPrivateKey) keyPair getPrivate()

String publicKeyString = getKeyString(publicKey)

System out println( public:\n + publicKeyString)

String privateKeyString = getKeyString(privateKey)

System out println( private:\n + privateKeyString)

//加解密类

Cipher cipher = Cipher getInstance( RSA )//Cipher getInstance( RSA/ECB/PKCS Padding )

//明文

byte[] plainText = 我们都很好!邮件 getBytes()

//加密

cipher init(Cipher ENCRYPT_MODE publicKey)

byte[] enBytes = cipher doFinal(plainText)

//通过密钥字符串得到密钥

publicKey = getPublicKey(publicKeyString)

privateKey = getPrivateKey(privateKeyString)

//解密

cipher init(Cipher DECRYPT_MODE privateKey)

byte[]deBytes = cipher doFinal(enBytes)

publicKeyString = getKeyString(publicKey)

System out println( public:\n +publicKeyString)

privateKeyString = getKeyString(privateKey)

System out println( private:\n + privateKeyString)

String s = new String(deBytes)

System out println(s)

}

lishixinzhi/Article/program/Java/hx/201311/25516

1、用公钥加密,用私钥解密。

2、给别人发信息,就从服务器上拉下来别人的公钥,加密后发给他。

3、对方拿到信息后用自己的私钥解密。

4、这样,公钥加密后除了私钥持有人,别人都看不到信息。

5、若是用私钥加密,那么公钥都能解密,还有何安全性可言?

6、私钥加密的场合只有一个,那就是数字签名,用来表明这个信息来源于你。