lipingruan / fucking-util-signature-all

node/go/web/h5/uni-app/mui/移动端/小程序/签名/验证/加密/解密/RSA/SHA/MD5/sign/verify/encrypt/decrypt

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于uni-app使用报错

PeePeeShrimp opened this issue · comments

您好,
我在uni-app引入fucking-util-signature-all,
运行时报错:文件查找失败:'fucking-util' at node_modules\fucking-util-signature\util.js:2
请问有什么解决办法呢?
谢谢

文档里面写了, 要先安装 fucking-util

yarn add fucking-util
npm install fucking-util

您好,想再请教一个问题,
我现在在Chrome可以运行成功加密,但在android端不行,报错“Error during encryption. Original error: Error: Secure random number generation is not supported by this browser.”
我是这样引入的:“var Signature = require ("fucking-util-signature-all");”
请问是哪里弄错了吗?
谢谢

@PeePeeShrimp 请提供运行环境和参数.

npm:6.9.2
node:v10.16.0
yarn:1.16.0
hbuilder X:2.0.1.20190614

var privateKey = '-----BEGIN PRIVATE KEY----- MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAK1B4Dn1iGrrkbX60vblSpuGF/IjCcC8qKlFxUYA/gulRCzST3jbs1hQ045ZeULp1QowlpOzHklk3cTqZzbWVnC4g2WIyxEcXEzcWuyn6k5TYQ30X7bun/P9E+8x+4ZmWsN1/gxZBoRK/UrE5jvY0Xeu1n5rji1QYAZPAf/p6rKnAgMBAAECgYBycaNFZbSYu8ZiKK6Vu9vOY4MJxK86iuP1/EpU9W7aDm68FKe+M5GB8tHro5p/4qmAs5ujMJv+6wu6eQN4q5gogkQyfYt2HAhcgcfPGxrLWDz12+tOJfcr+VkPyL/IquhpAJnJe1kc7XRgX2yl2w5KcbN2fuBgjV9xUWa9imAZAQJBAODqHp3FY0pJWMx++864xSVJs/Y0WrtFcXzkjWATDeixZsm9989ufMOLLqGVghdgKfmU8VYXZgqMUYJbz2kfk8ECQQDFNAgX6ycQeLwzgSZfevHYQmPjFANJtgRraQ6Fow9p8HGvD35ZTMJoUhU1WIYkuCbI48inzwlUR6TyKizyxkBnAkEAxF8lBBNHMaEAiuuD52Wjm37SRXBIl6F2CNl0JiH8zuG1IQdfyhhpjkGDIUlsIASyIVtNqyEa0rLYp7yJRvtvAQJBAISDECUyaI+S8bQSRrzGGpjdE83U9tijLJkYgR+fkI35egrOeHJ9N+1tqr6r+4fVDorTNVQ9tOEjO11WpdmFCmUCQESPpS0tcgfyXZhwB1Ez5nRA84Nro81mDw6opeeXv1gKf+bvVFGtBJmAdwrXXOvbegv+vQD+ClSonDnzmXBBtkI=-----END PRIVATE KEY-----'

var publicKey = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtQeA59Yhq65G1+tL25UqbhhfyIwnAvKipRcVGAP4LpUQs0k9427NYUNOOWXlC6dUKMJaTsx5JZN3E6mc21lZwuINliMsRHFxM3Frsp+pOU2EN9F+27p/z/RPvMfuGZlrDdf4MWQaESv1KxOY72NF3rtZ+a44tUGAGTwH/6eqypwIDAQAB-----END PUBLIC KEY-----'

var Signature = require ("fucking-util-signature-all");
let rsa = new Signature.RSA();
rsa.setPublicKey (publicKey);
rsa.setPrivateKey (privateKey);
let encrypted = rsa.encrypt (mac, 'base64');
console.log(encrypted);

@PeePeeShrimp 是在哪个环境运行的, Chrome/小程序/Android内置浏览器/微信浏览器

android

@PeePeeShrimp 是Android内置浏览器还是Chrome/360浏览器/qq浏览器或者其它的, 顺便请提供一下版本号我好测试.

不好意思我是新手不太懂,
好像并没有运行在什么浏览器吧,我是以手机app形式运行的,
在hbuilder x上方的“运行”-》“运行到手机或模拟器”,然后直接在手机上跑的

@PeePeeShrimp 那就是内置浏览器, 你Android版本是多少.

7.1.1

@PeePeeShrimp

可能是Hbuilder更新的问题, 你可以通过直接引用 fucking-util-signature-uni修复问题, 不用额外安装.

var Signature = require ( 'fucking-util-signature-uni' );

具体的我排查之后再更新.

好的,非常感谢!!

@PeePeeShrimp fixed on v0.0.6

不好意思,还想再问个问题,
请问加密方式用的是“RSA/ECB/NoPadding”吗?
我在前端生成了一个172位的密文,后端用java解密,始终得不到想要的结果,
Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");
"RSA/None/NoPadding"、"RSA/None/PKCS1Padding"等等会报错
"RSA/ECB/NoPadding"不报错,但最终结果是一串128位的字符串,并不是我加密前的明文,

谢谢

@PeePeeShrimp

java 私钥原生只支持 pkcs#8 格式. 所以最好前端也用 pkcs#8 格式,

实在不行只有动态转换格式 pkcs#1 => pkcs#8.

格式转换参考 How to Read PEM PKCS#1 or PKCS#8 Encoded Private Key In Java

加密参考 java实现RSA的简单加密解密

您好:
我现在后端仍然报错javax.crypto.BadPaddingException : Decryption error
从网上的资料看似乎还是前后端加解密用的方法不同,
请问您写的组件加密时用的加密方式和填充方式是什么呢?
我确定前后端现在用的都是pkcs#8,
但是后端的:Cipher cipher = Cipher.getInstance("RSA/NONE/PKCS8Padding");
RSA/NONE/PKCS8Padding,NONE、ECB、CBC等等不确定
谢谢

@PeePeeShrimp

加密实现方式: RSA/ECB/PKCS1Padding

前端需要设置参数: (RSA对象) rsa.keys.setOptions({encryptionScheme: 'pkcs1'});

问题参考:
#1
Cipher (Java Platform SE 8 )

终于调通了!谢谢!