登录页面之数据保密及数据传输完整性校验功能

  此功能由于前后台交互的设计比较繁琐,所以此功能最好是一个人开发;在开发过程中所遇到的难点为:

  1.由于在国企,需要找到一种被国企安全测试认可的方法。

  2.此加密设计到前后台,需要找到一种前后台可以互相加解密的方法。

  3.在加密的过程中还要进行数据完整性校验,防止恶意用户在传输数据中篡改数据。

  在我的面向百度编程的模式下,最终定下了设计方案

  

  整体流程:本系统加密传输采用三层加密方式,解决了数据保密性和传输完整性等漏洞;第一层加密方式为{明文#md5(明文)}的方式,用来做数据完整性校验;第二层对第一层加密之后的结果进行二次加密,加密方式采用RSA非对称加密,前台使用公钥进行加密,后台对应私钥解密;第三层加密为国密4中的ECB加密模式,对第二层加密之后的结果进行三次加密,加密之后的数据进行传输,保证了数据的保密性。

后端接受到前端传输过来的数据,先进行国密4ECB模式进行解密,解密之后的数据通过RSA后端私钥进行二次解密,此次解密之后的结果为{明文#md5(明文)}这种形式,以“#”进行分割,将明文进行md5加密,与前端传输过来的md5(明文)进行对比,如果对比结果不同,则给出提示,数据传输完整性被破坏,此方式解决了项目没有数据完整性校验的问题。

  

1、前端加密

前端填写的明文:11112222

第一层:数据完整性校验加密,采用{明文#md5(明文)} 的组合方式进行一次加密。

加密后密文:11112222#821f3157e1a3456bfe1a000a1adf0862

第二层:采用RSA非对称加密的方式对第一层加密后的密文进行二次加密。

RSA公钥:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAnXPulvJauLsulRIiUJM0KvgFirtdF1k+VkZ8zxXkAE0DyJaY+4XwKx+mXKC9jvjvf+Sbez/yFUZigs/vPW6SqEWgemsjVl97Dk02mdrYxc0YV6fWH/7otPZ/p0BIJsWdDK/UdVXbSyy7myGxsINM+LlgflN322dmSJOUGCtWbwIDAQAB

RSA加密后密文:OG7UuV/Z4XezcckB8HmtVudvRHUG1nK05ARFX40D3z1WYvCZEuczNuqv8RzxpNMWxDtvBpvNdlB0jZ5SV1nP83V4K7tg4+rf3tQor5icxHfsFwolCnux/d4jbLIpHfuLSR+aQYiA4D2ThnJPay06I5XFaa0BEeErTQJ9QaDIpa8=

 

第三层:采用国密4对第二层加密后的数据进行加密,加密方式采用sm4中的ECB加密模式。

代码截图:

 

Sm4加密的密钥:11HDESaAhiHHugDz

Sm4加密后的密文:sI1FGgmILLvO1PKkl1vdp0cKMU/TEzHKjbgR0zTXc1yQHJ5baygGrm3mhNkQzo4T5iQ3u5Mt1DFB4Dc4/y7hgGaX4Z7o5qnP8E2Ndfrhxv5DzGiXjFWggjiE2/xczAL3bz/Py5SHAPKhy1XZsnc5Bbk0PyP39gdmBAP2nhrZNq4/iJoB1euU/Ou4fdLAT2jk3ggaIQA/SFWFplx16dMK0peSGyV9oG4UPhtFmKd0Qz4=

前端加密的总体流程代码:

 

 

2后端解密

第一层:前端加密传输过来的数据进行SM4中对应ECB模式的解密

SM4密钥:11HDESaAhiHHugDz

SM4解密后的密文:OG7UuV/Z4XezcckB8HmtVudvRHUG1nK05ARFX40D3z1WYvCZEuczNuqv8RzxpNMWxDtvBpvNdlB0jZ5SV1nP83V4K7tg4+rf3tQor5icxHfsFwolCnux/d4jbLIpHfuLSR+aQYiA4D2ThnJPay06I5XFaa0BEeErTQJ9QaDIpa8=

SM4中对应ECB模式的解密代码:

 

第二层:RSA根据私钥对第一层解密后的数据进行解密

RSA私钥:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAnXPulvJauLsulRIiUJM0KvgFirtdF1k+VkZ8zxXkAE0DyJaY+4XwKx+mXKC9jvjvf+Sbez/yFUZigs/vPW6SqEWgemsjVl97Dk02mdrYxc0YV6fWH/7otPZ/p0BIJsWdDK/UdVXbSyy7myGxsINM+LlgflN322dmSJOUGCtWbwIDAQAB

RSA解密后的密文:11112222#821f3157e1a3456bfe1a000a1adf0862

RSA根据私钥进行解密的代码截图:

 

第三层:#分割{明文#md5(明文)} ,采用md5加密明文,与前端md5(明文)数据进行对比,根据对比结果,给出相应的提示,

后端解密总体流程图:

 

本文只是给出了解决方法,具体解决代码自行百度。

  

猜你喜欢

转载自www.cnblogs.com/hjzs/p/12965926.html