`
huangjinjin520
  • 浏览: 71527 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

基于aes的加解密方案

阅读更多
对前端上送的报文进行解密和验签
1、前端上送的报文先进行整体加密,然后把整体加密的数据作为encodeFieldVals的值;同时前端一起上送到后端的数据包括整体加密的aesKey
前端请求后端的例子:
    http://127.0.0.1:8080/btoa/user/login
    {
        encodeFieldVals=加密数据,
        aesKey=整体加密的aesKey
    }
2、后端获取encodeFieldVals和aesKey的值,使用aesKey对encodeFieldVals进行整体解密,整体解密后encodeFieldVals的数据格式为json格式。
解密后数据格式如下:
{
    "deviceId" :"a123xwsdfx4554rcffffooc87",
    "osVersion" : "5.1.10",
    "userName" : "王五",
     "password" : "a123xwsdfx4554rcffffooc87a123xwsdfx4554rcffffooc87"
    "phoneNo" :"a123xwsdfx4554rcffffooc87a123xwsdfx4554rcffffooc87a123xwsdfx4554rcffffooc87",
    "sex" : "男",
    encryptFields : "password,phoneNo",
    serverTimestamp : "1200000",
    signtrue : "asfdsafax3134134912341241WQ"
}
3、验签,整体解密后的json有个字段signtrue,该字段是前端对数据的签名;把前端传到后台的所有key值进行排序,然后把除了key为signtrue和encodeFieldVals的所有可以按如下格式:
    fieldName1=fieldValue1&fieldName2=fieldValue2……
组装成字符串;进行签名后与signtrue进行比较,如果相等说明验签成功;否则验签失败。
4、单字段加密,整体解密加密后的json数据里,有部分敏感信息字段进行了加密,已经加密的字段有encryptFields指定,以英文逗号分隔。把这些字段的值拿到进行单字段解密。

流程图:





对返回前端的报文进行加密和加签
1、如果配置了全部加密,则获取返回前端的数据进行全部加密,并把加密的数据作为encodeFieldVals的值返回

2、获取返回前端的数据根据配置的字段对需要加密的单字段进行加密,并把加密的数据作为encodeFieldVals的值返回前端,同时返回的json中包含encryptFields标识哪些字段做了单字段加密处理。
{
     "respCode":"000000",
"respMsg":"交易成功",
    "userId" : "afasfa134dfdasf",
    "email" : "huang@sina.com",
    "phoneNo" : "13711645814",
    "nickName" : "霸王",
    "accountInfo" : {
              "accountNo" : "A1237897029",
              "identityId" :"440902198609228090",
              "nameName" : "赵六",
              "validateDate" :"20101010-20221010"
    },
       signtrue : "asfdsafax3134134912341241WQ",
       encryptFields:"identityId,nameName"
}
3、返回加密后的数据到前端
流程图:








  • 大小: 26.1 KB
  • 大小: 31.9 KB
  • 大小: 30.2 KB
  • 大小: 27.8 KB
  • 大小: 39.9 KB
0
0
分享到:
评论

相关推荐

    vb6.0下AES加解密模块,可对字符和文件进行加解密

    在VB6.0中实现AES加解密,首先需要引入支持AES操作的库或者组件。这可能涉及到使用第三方库,如OpenSSL或Bouncy Castle的.NET版本,或者使用Microsoft的CryptoAPI。这些库提供了必要的加密函数,允许开发者在VB6.0...

    AES加解密工具

    标题中的“AES加解密工具”显然是一款软件应用,利用MFC(Microsoft Foundation Classes)框架开发,用于执行AES的加密和解密操作,并且具有MAC(Message Authentication Code)计算功能,以确保数据的完整性和来源...

    AES单片机加密解密 C语言源代码

    总的来说,这个资源包提供了一套适用于单片机环境的AES加密解密方案,支持Keil C51和STM32平台,并且支持不同长度的密钥,适应了多样化的安全需求。对于那些需要在单片机上处理敏感数据或者构建安全通信链路的开发者...

    C51可用的AES加解密C语言算法

    总的来说,这个C51可用的AES加解密算法提供了一种在资源受限的微控制器上实现安全加密的解决方案。尽管C51的硬件限制较大,但通过精心优化的C语言实现,仍能在保证安全性的同时满足运行需求。对于涉及数据保护的C51...

    本地图片AES加密解密

    "本地图片AES加密解密"是一个针对这个问题提出的技术方案,旨在保护存储在本地设备上的图片不被未经授权的第三方访问。AES(Advanced Encryption Standard)加密是一种广泛应用的对称加密算法,因其高效和安全性而...

    AES.zip_AES加解密_AES加解密芯片_AES算法_Verilog 算法_aes加解密verilog

    在本文中,我们将深入探讨AES加解密技术、AES算法以及如何使用Verilog HDL来实现这一算法。 AES算法由比利时密码学家Joan Daemen和Vincent Rijmen设计,于2001年被美国国家标准与技术研究所(NIST)选定为新的高级...

    使用VC++实现AES加解密程序

    作为C++程序员,理解并能够实现AES加解密对于安全编程至关重要。 首先,AES算法基于分组密码,它将明文数据分为128位的块进行处理。有三种不同的密钥长度:128位、192位和256位,每种长度都有不同的轮数,分别是10...

    MFC实现的AES加密解密程序

    AES加密基于替换与置换的原理,通过多次迭代来完成数据的加密过程。它支持128、192和256位的密钥长度,以及128位的数据块大小。在加密过程中,数据被划分为128位的数据块,然后通过一系列复杂的数学运算,如字节代换...

    AES加解密工具(支持16进制).zip

    在实际使用AES加解密工具时,首先需要理解密钥的概念,密钥是AES算法的核心,用于将明文转换成密文以及将密文还原成明文。用户需要根据需求选择合适的密钥长度,并确保密钥的安全存储,避免被未经授权的人员获取。...

    aes加密解密js

    标题"aes加密解密js"指出,我们关注的是在JavaScript环境中如何使用AES进行数据的加解密操作。在Web开发中,这通常是出于保护用户隐私、防止数据被篡改或窃取的目的。 在JavaScript中,可以使用多种库来实现AES加密...

    C#实现十六进制AES的加解密,字节数组工具类

    总结来说,C#实现的十六进制AES加解密结合了强大的加密算法和方便的数据表示方式,提供了可靠的数据安全解决方案。`ByteUtil.cs`和`AesHelper.cs`这两个文件协同工作,实现了字节数组的转换以及AES的加解密操作,是...

    AES加密解密GPU程序

    AES的核心在于其基于替换和置换的迭代过程,包括四个步骤:字节代换、行位移、列混淆和轮密钥加。在CPU上执行这些操作相对较慢,特别是在处理大量数据时。然而,GPU因其并行计算能力而闻名,能够同时处理大量独立的...

    基于PHP和JS的AES相互加密解密方法详解(CryptoJS)_PHP_JS_AES源码

    加密和解密过程通过多次的替换、置换和混淆操作实现,这使得破解AES变得非常困难。AES支持128、192和256位的密钥长度,其中128位是最常用的。 在PHP中,我们可以使用内置的`openssl_encrypt`和`openssl_decrypt`...

    jquery实现aes加密,后端php解密

    在网络安全领域,数据加密是确保信息安全传输的重要手段。在这个场景中,我们讨论的是前端使用jQuery配合crypto-js库...通过对这些资源的深入学习和实践,可以更好地理解和应用这个前端jQuery加密、后端PHP解密的方案。

    aes.rar_AES_aes delphi_aes 加密 解密_delphi aes

    **AES(高级加密标准)**是目前广泛应用的一种对称加密算法,全称为Advanced Encryption Standard。它基于Rijndael算法,由比利时密码学家Joan ...通过深入理解这些知识点,你可以构建出安全可靠的加密解密解决方案。

    Delphi与Java互通AES加解密算法.zip

    通过这个资源,开发者可以获得一个完整的解决方案,实现Delphi和Java环境下的AES加解密互通,从而在跨平台项目中保证数据的安全传输。对于需要在这些环境中进行数据加密和解密的开发者来说,这是一个非常有价值的...

    AES.rar_AES_AES c++_AES加密_AES加密解密_AES算法

    AES加密过程基于一个可变的128位密钥和128位明文数据块,通过一系列复杂的数学变换来完成加密。其主要包含四个基本操作:字节代换(SubBytes)、行位移(ShiftRows)、列混淆(MixColumns)和密钥扩展(KeyExpansion...

    AES加解密RSA-SHA1签名验证

    本文将深入探讨标题中提及的"AES加解密"、"RSA-SHA1签名验证"这些关键概念,并结合标签内容进行详细阐述。 首先,让我们来理解AES(Advanced Encryption Standard),它是一种广泛应用的对称加密算法。AES的工作...

    AES 加密解密工具

    项目中的".sln"和".suo"文件是Visual Studio解决方案和用户选项文件,它们包含了项目的配置信息和用户设置,而"AES加密解密工具"可能是源代码或编译后的可执行文件,用于实际的加密和解密操作。 理解AES加密原理和...

    AES加密解密算法实现(C、C++)

    AES算法的核心是基于替换和置换的操作,主要包括四个基本操作:字节代换(SubBytes)、行位移(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。在加密过程中,明文块通过这些操作与轮密钥进行交互,...

Global site tag (gtag.js) - Google Analytics