fucking-util-signature
兼容支持 nodejs/h5+/带window的网页环境
模块依赖 fucking-util 模块, 请预先安装
模块选择
- 要使用
uni-app
模式开发, 使用fucking-util-signature-all
- 不使用
uni-app
模式开发, 使用此模块- 单独小程序使用
fucking-util-signature-uni
- 单独小程序使用
常见疑难解答
- 如何在 Golang 中使用?
- 如何在 Java 中使用?
- 如何在 PHP 中使用?
- Java RSA加解密示例
- RSA加解密报错? 旧浏览器不支持? 可使用
fucking-util-signature-uni
代替, 问题参考 - rsa.keys属性参考(修改后的NodeRSA实例)
- Nvue报错?
安装
yarn
yarn add fucking-utilyarn add fucking-util-signature
npm
npm install fucking-utilnpm install fucking-util-signature
使用方法
// 多选一var Signature = ; // 生成公私钥 ( 1024/2048/..., 'pkcs#*' )// 默认1024位, pkcs8let publicKey privateKey = SignatureRSA; console; // RSA对象let rsa = ; // 设置公私钥rsa;rsa; let unsigned = 'hello world!'; // 字符串签名let sign = rsa; console; // 签名验证let verified = rsa; console; let unencrypt = 'Unencrypt string'; // 字符串加密let encrypted = rsa; console; // 解密let decrypted = rsa; console;
高级用法
let keys = SignatureRSA; let signature = ; let rsa = signature;// let md5 = signature.md5 ( );// let sha256 = signature.sha256 ( ); let unsigned = 'hello world!'; let sign = rsa // 更新源数据 // 设置私钥; // 生成签名 console; let verified = rsa // 更新源数据, 此处可以忽略 // 设置公钥; // 验证签名 console;
对象签名/验签
对象签名模式是先把对象转成querystring
, 对象内的json
内容会被转成JSONString
, 然后再加上签名类型字段, 有盐的话会加盐字段, 最后进行字符串签名.
应用场景:
- 微信支付/支付宝支付签名
- 数据传输签名
let signature = ; // 默认的 formOptions, 可以不用设置signatureformOptions = signKey: 'sign' // 放置签名的字段 signTypeKey: 'signType' // 放置签名类型的字段 signSaltKey: 'key' // 盐值字段 ignoreKeys: // 签名忽略的字段 'sign' 'key' salt: "" // 盐; let signer = signature;// let signer = signature.rsa ( ); let form = user: "1589235" userInfo: nickname: "Liping Ruan" avatar: "@%FFOISJAFJZC" ; let sign querystring = signerform true // 设置 签名/验签 为对象签名模式; // 签名输出 16进制 字符串 console; let verified = signer; console;
formOptions
加盐和自定义 let signature = ; let formOptions = signatureformOptions; formOptionssignKey = 'sign';formOptionssignTypeKey = 'sign_type';formOptionssignSaltKey = 'sign_salt';formOptionsignoreKeys = 'sign' 'sign_salt' ;formOptionssalt = "Default salt"; // 默认盐, 可以不设置 let keys = SignatureRSA; let json = a:1b:2 ; let signer = signatureform true ; let sign querystring = signer; console;console;console; let verified = signer; console;
RSA私钥加密/公钥解密
私钥加密公钥解密的需求不大, 所以只实现了字符串加解密
let rsa = ; let keys = SignatureRSA; // 设置公私钥rsa; rsa; let uncrypted = 'hello world'; console; // 使用私钥加密let encrypted = rsakeys; console; // 使用公钥解密let decrypted = rsakeys; console;
RSA加解密Padding更改
支持Padding:
- pkcs1
- pkcs1_oaep (默认) 更改到与其它端匹配的填充方式:
// RSA对象rsakeys;