CFCA私钥解密


JAVA

public static final String CHAR_ENCODING = "UTF-8"; public static final String AES_ALGORITHM = "AES/ECB/PKCS5Padding"; public static final String RSA_ALGORITHM = "RSA/ECB/PKCS1Padding"; public static String decryptByPrivateKey(String cryptograph, String privateKey) throws Exception { Key key = getPrivateKeyByString(privateKey); /** 得到Cipher对象对已用公钥加密的数据进行RSA解密 */ Cipher cipher = Cipher.getInstance(CipherConfigure.RSA_ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, key); byte[] b1 = Base64.decodeBase64(cryptograph.getBytes(CipherConfigure.CHAR_ENCODING)); /** 执行解密操作 */ byte[] b = cipher.doFinal(b1); return new String(b); } public static Key getPrivateKeyByString(String key) throws Exception { byte[] keyBytes = decryptBASE64(key); PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); Key privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); return privateKey; }

PHP

function rsaPrivateDecode($data,$private_key,$password){ $prikey=file_get_contents($private_key); $encryptKey =$data['encryptKey']; $results=array(); openssl_pkcs12_read($prikey,$results,$password); $private_key=$results['pkey']; $pi_key = openssl_pkey_get_public($private_key); openssl_private_decrypt(base64_decode($encryptKey),$decrypted,$private_key); return $decrypted; }

C#

public static string CFCADencryption(string prviateKeyPath, string data, string pfxPassword) { X509Certificate2 pubcrt = new X509Certificate2(prviateKeyPath, pfxPassword, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet); string keyprivate = pubcrt.PrivateKey.ToXmlString(true); string rsadata = RSADecrypt(keyprivate, data); return rsadata; }

GOLang

///根据私钥证书路径和密码对数据进行私钥解密并返回数据 func PrivateDecrypt(data string,path string,password string)(string,error){ var pfxData []byte var erro error var private *rsa.PrivateKey pfxData,err := ioutil.ReadFile(path) if err != nil { erro = err } var priv interface{} //解析证书 priv,_,err = pkcs12.Decode(pfxData, password) if err != nil { erro = err } private = priv.(*rsa.PrivateKey) ciphertext,err := base64.StdEncoding.DecodeString(data) if err != nil { erro = err } reslut, err := rsa.DecryptPKCS1v15(rand.Reader, private, ciphertext) if err != nil { erro = err } return string(reslut), erro }

Python

def gen_decrypt(encrydata): path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) doc = os.path.join(path, 'client.pem') with open(doc) as pk: key_data = pk.read() #print(key_data) key_data1 =key_data #print (key_data1) private_keyBytes =base64.b64decode(key_data1) #print (private_keyBytes) rsakey = RSA.importKey(private_keyBytes) cipher = Cipher_pkcs1_v1_5.new(rsakey) #print('encrydata:------'+encrydata) text = cipher.decrypt(base64.b64decode(encrydata.encode()),None) return text