小程序AES加密、解密

小程序AES加密、解密,第1张

npm install  crypto-js

import CryptoJS from 'crypto-js'

// 定义加/解密的 key

const initKey = 'Test-AES-CBC-128';

// 设置数据块长度

const keySize = 128;

//设置向量和服务端保持一致

const iv = "0abcdefghij7twhjm";

export const aesEncrypt = (data, key) => {

  /

  CipherOption, 加密的一些选项:

  mode: 加密模式, 可取值(CBC, CFB, CTR, CTRGladman, OFB, ECB), 都在 CryptoJSmode 对象下

  padding: 填充方式, 可取值(Pkcs7, AnsiX923, Iso10126, Iso97971, ZeroPadding, NoPadding), 都在 CryptoJSpad 对象下

  iv: 偏移量, mode === ECB 时, 不需要 iv

  返回的是一个加密对象

  /

  const cipher = CryptoJSAESencrypt(data, key, {

    mode: CryptoJSmodeCBC,

    padding: CryptoJSpadPkcs7,

    iv: CryptoJSencUtf8parse(iv)

  });

// 将加密后的数据转换成 Base64

  const base64Cipher = cipherciphertexttoString(CryptoJSencBase64); //CryptoJSencBase64

  consolelog('base64Cipher', base64Cipher)

// 处理 Android 某些低版的BUG

//    const resultCipher = base64Cipherreplace('//+/g,\'-\'')replace(g,'_');

// 返回加密后的经过处理的 Base64

  return base64Cipher;

}

/

解密函数

@param {string} encrypted - 加密的数据;

@param {string} key - 加密使用的 key

/

export const aesDecrypt = (encrypted, key) => {

// 先将 Base64 还原一下, 因为加密的时候做了一些字符的替换

//      const restoreBase64 = encryptedreplace()replace(/_/g,'/');

// 这里 mode, padding, iv 一定要跟加密的时候完全一样

// 返回的是一个解密后的对象

  const decipher = CryptoJSAESdecrypt(encrypted, key, {

    mode: CryptoJSmodeCBC,

    padding: CryptoJSpadPkcs7,

    iv: CryptoJSencUtf8parse(iv)

  });

// 将解密对象转换成 UTF8 的字符串

  const resultDecipher = CryptoJSencUtf8stringify(decipher);

// 返回解密结果

  return resultDecipher;

}

程序授权和登录,授权在先。

1、当用户进入微信小程序时,首先我们先判断用户是否授权过此小程序

2、如果没有授权,我们通过一个按钮来实现授权登录

3、通过bindgetuserinfo事件,我们可以获取到个人的信息、加密偏移数据、加密用户信息(edetail获取)

4、用户可以授权登录,也可以取消授权

5、根据登录接口返回的code码,判断用户是否时新用户。

如果不是新用户,我们就直接保存下token(服务器返回的token);如果是新用户,我们就要先注册,再登录。

6、当用户注册成功后,在调登录接口,保存token。在有些页面需要使用token

7、在步骤1中,当我们授权过时,我们要看token是否存在

8、当token存在时,我们直接执行逻辑代码

9、当token不存在时,我们就需要登录,登录后判断返回的code码,在根据code码判断用户是否是新用户。最后保存token

小程序泄露了sessionkey不可以导致任意用户登录。

小程序泄露了sessionkey前端传递code,开发者服务端会调用此接口去换取sessionkey。所以小程序泄露了sessionkey不可以导致任意用户登录。

会话密钥(session key)也称为数据加密密钥或者工作密钥,是保证用户跟其它计算机或者两台计算机之间安全通信会话而随机产生的加密和解密密钥,它可由通信用户之间进行协商得到。它一般是动态地、仅在需要进行会话数据加密时产生。

电脑微信登入小程序数字信封解密失败是回调中调用wxlogin登录,会刷新登录态。。此时服务器使用code换取的sessionKey不是加密时使用的sessionKey,导致解密失败。解决方法是开发者提前进行login。或者在回调中先使用checkSession进行登录态检查,避免login刷新登录状态。

在开发微信小程序过程中,遇到一个登录的问题。就是微信小程序登录 *** 作的时候,第一次总是会失败,返回 pad block corrupted ,然后再次登录的时候就会登录成功。出现这样的错误,百度原因大多数是说 session_key 过期,到期去解密手机号数据的时候,解密出错。具体分析:

这里描述的问题是出现在第四步的步骤中,原因是第三步获取的 session_key 不正确,导致解密 *** 作错误,返回 pad block corrupted 。但是导致 session_key 不正确的原因是第二步调用 wxlogin() 方法,会刷新 session_key 。因为第一步获取的手机号加密数据是通过原来的 session_key 加密的,现在 session_key 刷新了,导致后台在第三步去获取 seesion_key 的时候,获取的是新的 seesion_key ,然后去解密的时候就报错了。

loginjs是我们的业务js区域,首先我们这样引用md5js

然后我们这样使用md5js中的md5加密函数对字符进行加密

这样就可以对密码进行md5加密了

很多方法,比如用if把你写的整个程序包起来。

bool a;

d出一个窗体,要求输入密码,然后获取该窗体中的输入信息,与你设置的密码进行比较,相同则a=true,不同则a=false。(d出窗体就是另外新建个窗体1,窗体1Show()就可以打开,我记得是这样。看不明白可以直接百度C#d出窗口)

if(a)

{

你的程序;

}

以上就是关于小程序AES加密、解密全部的内容,包括:小程序AES加密、解密、小程序授权和登录哪个先、小程序泄露了sessionkey可以导致任意用户登录吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10216793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存