日期:2014-05-20  浏览次数:20683 次

RSA多次加密同一原文密文都不一样?
RSA采用一对固定的公私匙加密同一原文每次的密文都不一样,是这样的么?

/**  
     * 解密 
     * 用私钥解密
     * @param data  
     * @param key  
     * @return  
     * @throws Exception  
     */   
    public static byte[] decryptByPrivateKey(byte[] data, String key)     
            throws Exception {     
        // 对密钥解密     
        byte[] keyBytes = (new BASE64Decoder()).decodeBuffer(key);     
        // 取得私钥     
        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);     
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);     
        Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);     
        // 对数据解密     
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());     
        cipher.init(Cipher.DECRYPT_MODE, privateKey);     
        return cipher.doFinal(data);     
    }    
    /** 
     * 加密 
     * 用公钥加密  
     * @param data  
     * @param key  
     * @return  
     * @throws Exception  
     */   
    public static byte[] encryptByPublicKey(byte[] data, String key)     
            throws Exception {     
        // 对公钥解密     
        byte[] keyBytes = (new BASE64Decoder()).decodeBuffer(key);     
        // 取得公钥     
        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);     
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);     
        Key publicKey = keyFactory.generatePublic(x509KeySpec); 
        // 对数据加密     
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());