cordova-plugin-camera在某些android机型中拍照或选择文件时闪退出错的解决办法

cordova-plugin-camera在某些android机中会出现拍照完成时,无法进入照片编辑,导致直接闪退,特别在ionic中使用闪退后,再次进入APP,APP则直接就是重新reload了,我尝试过很多手机,比如华为、魅族等,未出现闪退问题,但是偏偏小米9se上出现了闪退,不知道其他型号的小米手机是否也会出现此问题。欢迎大家自行验证。

出现这个问题,大概原因就是当我们再拍照或者进入选择图片的时候,APP自认为我们已经退出了APP去使用拍照功能了,由此导致APP自动退出了。因此解决的方法就是当我们打开拍照的时候让当前APP处于背景运行状态即可

继续阅读cordova-plugin-camera在某些android机型中拍照或选择文件时闪退出错的解决办法

JavaScript nodeJS base64加密解密url参数

为了保证全段传递都后端的数据安全性,比如用户登录时输入的密码,在post发送请求中可能会直接暴露了明文。因此可能需要前端进行相应的加密传递到后端,再由后端进行解密后再继续操作。

我使用base64的加密方式对密码进行加密,不过大家都知道base64很容易就被破解了,因此,我会替换掉几个base64生成字符串中的字母,这样就可以达到别人很难破解的目的了。具体直接看代码!

<br>
//利用base64加密传输数据<br>
function base64Encryption(str) {<br>
    let base64 = Buffer.from(str, 'utf-8').toString('base64')<br>
    // 把base64源数据中的M与Q替换成其他字符串,防止别人破解<br>
    let base64Confusion = base64.replace(/\M/, '=J=')<br>
    base64Confusion = base64Confusion.replace(/\Q/, '=V=')<br>
    return base64Confusion<br>
}<br>
function base64Decrypt(str) {<br>
    // 先把base64混淆后的字符串转换为正常额base64字符串,在进行解密<br>
    let base64 = str.replace(/=J=/, 'M')<br>
    base64 = base64.replace(/=V=/, 'Q')<br>
    return Buffer.from(base64, 'base64').toString('utf-8')<br>
}<br>
// 此加密不仅可以用于用户密码加密,也可以用于url传参加密<br>
// 一下是加密一般字符串<br>
var data = '123m你好'<br>
console.log('加密:', base64Encryption(data))<br>
console.log('解密:',base64Decrypt(base64Encryption(data)))<br>

// 一下是加密url传参,如url为http://localhost/users?userName=Jack&amp;&amp;password=1234567890<br>
var userName = 'Jack'<br>
var password = '1234567890'<br>
console.log(`加密: http://localhost/users?userName=${base64Encryption(userName)}&amp;&amp;password=${base64Encryption(password)}`)<br>
// 后端解码<br>
console.log(`解密: http://localhost/users?userName=${base64Decrypt(base64Encryption(userName))}&amp;&amp;password=${base64Decrypt(base64Encryption(password))}`)<br>
// 我们可以这样进行加密连接参数的字符串, 比如字符串是userName=Jack&amp;&amp;password=1234567890<br>
var params = `userName=${userName}&amp;&amp;password=${password}`<br>
console.log(`加密:http://localhost/users?data=${base64Encryption(params)}`)<br>
// 后端解码应该是拿到data的值为dXNlck5hbWU9SmFjayYmcGFzc3dvcm=V=9=J=TIzNDU2Nzg5MA==,并解码此值并对其进行分割获取相应的数据内容<br>
console.log(`解密data:${base64Decrypt(base64Encryption(params))}, 后端分割:${base64Decrypt(base64Encryption(params)).split('&amp;&amp;')}`)<br>