资源简介

java rsa 公钥分段加密代码转php代码,php采用OPENSSL_NO_PADDING 模式填充ascii0加解密

资源截图

代码片段和文件信息

package com.asiainfo.openplatform.common.util;

import java.io.ByteArrayOutputStream;
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.Signature;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;

import javax.crypto.Cipher;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

/**
 * RSA加密工具类
 * 
 * Copyright: Copyright (c) 2011 Asiainfo
 * 
 * @ClassName: TransferSoapReqHelper.java
 * @Description: 该类的功能描述
 *
 * @version: v1.0.0
 * @author: zhangmeng3
 * @date: 2014-9-17 上午10:38:45
 *
 */
public class RSAUtils {  

    /** 
     * 加密算法RSA 
     */  
    public static final String KEY_ALGORITHM = “RSA“;  
      
    /** 
     * 签名算法 
     */  
    public static final String SIGNATURE_ALGORITHM = “MD5withRSA“;  
  
    /** 
     * 获取公钥的key 
     */  
    private static final String PUBLIC_KEY = “RSAPublicKey“;  
      
    /** 
     * 获取私钥的key 
     */  
    private static final String PRIVATE_KEY = “RSAPrivateKey“;  
      
    /**
     * RSA最大加密明文大小
     */  
    private static final int MAX_ENCRYPT_BLOCK = 64;  
    
    /** 
     * RSA最大解密密文大小 
     */  
    private static final int MAX_DECRYPT_BLOCK = 75;
    
    /**
     * RSA密钥长度
     */
    private static final int INITIAL_KEY_SIZE = 600;
  
    /**
     * 

 
     * 生成密钥对(公钥和私钥) 
     * 

 
     *  
     * @return 
     * @throws Exception 
     */  
    public static Mapject> genKeyPair() throws Exception {  
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM new BouncyCastleProvider());
        keyPairGen.initialize(INITIAL_KEY_SIZE);
        KeyPair keyPair = keyPairGen.generateKeyPair();  
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();  
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();  
        Mapject> keyMap = new HashMapject>(2);
        keyMap.put(PUBLIC_KEY publicKey);  
        keyMap.put(PRIVATE_KEY privateKey);  
        return keyMap;
    }
      
    /**
     * 

 
     * 用私钥对信息生成数字签名 
     * 

 
     *  
     * @param data 已加密数据 
     * @param privateKey 私钥(base64编码) 
     *  
     * @return 
     * @throws Exception 
     */  
    public static String sign(byte[] data String privateKey) throws Exception {  
        byte[] keyBytes = base64Utils.decode(privateKey);  
        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);  
        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);  
        PrivateKey privateK = keyFactory.generatePrivate(pkcs8KeySpec);  
        S

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      11790  2020-04-11 17:17  RSAUtils.java

     文件       1343  2020-04-11 17:27  rsa.php

----------- ---------  ---------- -----  ----

                13133                    2


评论

共有 条评论