yijiliangfang 2022-10-19 17:32 采纳率: 100%
浏览 31
已结题

如何用PHP重写下面这段java的Sha256WithRSA生成签名?

如何用PHP重写下面这段java的Sha256WithRSA生成签名?

     /**
     * 签名
     *
     * @param: plain,明文
     * @param: pkcs8 私钥
     */
    public static byte[] sign(byte[] plain, String priKey) {
        try {
            PrivateKey privateKey = loadPriKey(priKey);
            Signature signature = Signature.getInstance("Sha256WithRSA");
            signature.initSign(privateKey);
            signature.update(plain);
            return signature.sign();
        } catch (Throwable t) {
            throw new RuntimeException(t);
        }
    }
 
 
    /**
     * 加载私钥数据
     *
     * @param: pubKey,私钥文本
     */
    public static PrivateKey loadPriKey(String priKey) {
        try {
            //1.读取私钥文件,获取私钥数据
            byte[] bytesPrivateBase64 = readPriKey(priKey);
            //2.对读取回来的数据进行Base64解码
            byte[] bytesPrivate = Base64.getDecoder().decode(bytesPrivateBase64);
            //3.把解码后的数据,重新封装成一个PrivateKey对象
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(bytesPrivate);
            return KeyFactory.getInstance("RSA").generatePrivate(keySpec);
        } catch (Throwable t) {
            throw new RuntimeException(t);
        }
    }
 
    private static byte[] readPriKey(String key) {
        try {
            BufferedReader bufferedReader = new BufferedReader(new StringReader(key));
            String str = null;
            StringBuilder stringBuilder = new StringBuilder();
            while ((str = bufferedReader.readLine()) != null) {
                if (str.contains("---")) {
                    continue;
                }
                stringBuilder.append(str);
            }
            return stringBuilder.toString().getBytes();
        } catch (Throwable throwable) {
            throw new RuntimeException(throwable);
        }
    }
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月27日
    • 创建了问题 10月19日

    悬赏问题

    • ¥100 set_link_state
    • ¥15 虚幻5 UE美术毛发渲染
    • ¥15 CVRP 图论 物流运输优化
    • ¥15 Tableau online 嵌入ppt失败
    • ¥100 支付宝网页转账系统不识别账号
    • ¥15 基于单片机的靶位控制系统
    • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
    • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
    • ¥15 手机接入宽带网线,如何释放宽带全部速度