首页新闻找找看学习计划

求助java代码转换成.net代码

0
悬赏园豆:30 [待解决问题]

//
私钥加密 public static byte[] encryptByPrivateKey(byte[] data, byte[] key) throws Exception { PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec); Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(data); } /** * 加密 * @param data 待加密数据 * @param key 密钥 * @return byte[] 加密数据 */ public static byte[] encrypt(byte[] data, byte[] key) throws Exception{ //还原密钥 Key k = toKey(key); /** * 实例化 * 使用PKCS7Padding填充方式,按如下代码实现 * Cipher.getInstance(CIPHER_ALGORITHM,"BC"); */ Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); //初始化,设置为解密模式 cipher.init(Cipher.ENCRYPT_MODE, k); //执行操作 return cipher.doFinal(data); }

目前做银联无卡支付借口,银联方面要求传送的格式是如下,但是目前老是传过去报错,说无法解密数据,通过询问说是第二段(BASE64(RSA(报文加密密钥)))有问题,而官方提供的java版本如上,求助严格转换成.NET代码。

加密报文体格式:BASE64(商户号)| BASE64(RSA(报文加密密钥))| BASE64(3DES(报文原文))

hengxinyi的主页 hengxinyi | 初学一级 | 园豆:5
提问于:2014-09-10 19:40
< >
分享
所有回答(2)
0
// 私钥加密
    public static byte[] encryptByPrivateKey(byte[] data, byte[] key)
         {
        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
        PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);
        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
        cipher.init(Cipher.ENCRYPT_MODE, privateKey);
        return cipher.doFinal(data);
    }

    /**
     * 加密
     * @param data 待加密数据
     * @param key 密钥
     * @return byte[] 加密数据
     */    
    public static byte[] encrypt(byte[] data, byte[] key) {
        //还原密钥
        Key k = toKey(key);
        /**
         * 实例化
         * 使用PKCS7Padding填充方式,按如下代码实现
         * Cipher.getInstance(CIPHER_ALGORITHM,"BC");
         */
        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
        //初始化,设置为解密模式
        cipher.init(Cipher.ENCRYPT_MODE, k);
        //执行操作
        return cipher.doFinal(data);
    }
519740105 | 园豆:5810 (大侠五级) | 2014-09-10 21:42

问题是有些类.net不存在,比如PKCS8EncodedKeySpec这个对应什么?

Cipher这个又是什么?

支持(0) 反对(0) hengxinyi | 园豆:5 (初学一级) | 2014-09-10 21:52

@hengxinyi: 

PKCS8EncodedKeySpec:应该是一个私钥加密规范类,在.net里有类似的,具体的,要你去了解这个类的功能再确定.net的类。

Cipher:也是一个加密类,一样的要你弄明白这个类的公用后替代,我对java而言是文盲。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-09-11 07:28
0

只提供JAVA DEMO代码?没有.NET的版本么!这是什么银行,这么2

Alex_QY1987 | 园豆:1888 (小虾三级) | 2014-09-11 17:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册