-
2021-04-24 22:36:40
为了防止提交到接口的明文泄密,可以对提交到接口的数据加密,可以用AES加密算法。微信公众平台官方API接口就是采用此算法。
加密方法:
所有提交过来的数据都使用 AES
加密算法+B ase64
算法加密:
1.AES加密参数:
加密模式:AES-128-ECB ( 可用更安全的aes-128-cbc-微信公众平台在用
))
向量iv:空 (aes-128-cbc时需要)
密钥Key:“123456789”(请勿外泄)
填充:无( 微信公众平台用的是PKCS7填充
)
加密步骤:
对数据进行AES加密。
对AES加密后的数据进行Base64加密。
3.加密示例:
1)原始数据:“hello world”
2)AES加密后数据:“bH� �G:9�i_x0005_��”
3)Base64加密后数据:“YkilCuxHOgY5Bv9pGgXcwA==”
代码:
//$key previously generated safely, ie: openssl_random_pseudo_bytes
$key='123456789';
$plaintext="hello world";
//$cipher = "aes-128-cbc";
$cipher = "AES-128-ECB";
if (in_array($cipher, openssl_get_cipher_methods()))
{
// $iv='1111111111111111';
$iv='';
$ciphertext = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$ciphertext =base64_encode($ciphertext);
//store $cipher, $iv, and $tag for decryption later
$original_plaintext = openssl_decrypt(base64_decode($ciphertext), $cipher, $key, OPENSSL_RAW_DATA, $iv);
var_dump( $original_plaintext);
var_dump( $ciphertext);
}
更多相关内容 -
WebApi实现通讯加密
2020-10-20 07:39:23本文主要介绍了WebApi实现通讯加密的方法,具有很好的参考价值,下面跟着小编一起来看下吧 -
Microsoft CryptoAPI加密技术 源代码.zip
2021-03-28 11:01:23Microsoft CryptoAPI加密技术 源代码.zip -
nodejs-encryption-api-example:使用 node.js 通过 API 加密解密数据的示例
2021-07-24 17:22:32使用 Node.js 加密 API 端点 介绍 使用 node.js 通过 API 加密/解密数据的示例。 此示例的想法是测试如何在数据存储(例如 MongoDB)下存储加密数据,并通过为每次调用提供加密密钥来保持对数据的控制。 该项目不... -
SWIRLE:安全工作口译员机器人离开加密(SWIRLE)是Discord机器人,旨在测试Discord API加密的实现
2021-04-18 00:48:16旋流安全工作口译员机器人离开加密(SWIRLE)是Discord机器人,旨在测试Discord API加密的实现。 SWIRLE利用3种加密形式来解密在指定通道中发送的消息。 加密的3种形式为, 和。 为了加密消息,建议使用 。设置频道... -
ApiSecret移动端和服务器Api加密演示
2017-07-04 18:53:52拿到从后台返回的AES加密后的token * 2.根据约定秘钥进行解密,并把token保存下来 AES秘钥由移动端和后台商议决定 后台验证步骤: * 1.取出timestamp 验证是否是过期请求,过期则不处理 * 2.通过userId和token... -
一个简单的MFC类,用于使用Crypto API加密数据
2021-04-11 15:25:03一篇文章,展示如何使用Crypto API制作一个简单的MFC类,该类可以加密和解密不同类型的数据 -
前后端API交互使用RSA和AES加密解密(js、Java).md
2021-08-26 15:24:32前后端API交互使用RSA和AES加密解密(js、Java).md -
这个轮子让SpringBoot实现api加密So Easy!
2020-09-08 19:12:52SpringBoot的API加密对接 在项目中,为了保证数据的安全,我们常常会对传递的数据进行加密。常用的加密算法包括对称加密(AES)和非对称加密(RSA),博主选取码云上最简单的API加密项目进行下面的讲解。 下面请出...SpringBoot的API加密对接
在项目中,为了保证数据的安全,我们常常会对传递的数据进行加密。常用的加密算法包括对称加密(AES)和非对称加密(RSA),博主选取码云上最简单的API加密项目进行下面的讲解。
下面请出我们的最亮的项目
项目介绍
该项目使用RSA加密方式对API接口返回的数据加密,让API数据更加安全。别人无法对提供的数据进行破解。Spring Boot接口加密,可以对返回值、参数值通过注解的方式自动加解密 。
什么是RSA加密
首先我们当然是了解RSA加密
RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。
举例子大法
加密和签名都是为了安全性考虑,但略有不同。常有人问加密和签名是用私钥还是公钥?其实都是对加密和签名的作用有所混淆。简单的说,加密是为了防止信息被泄露,而签名是为了防止信息被篡改。这里举2个例子说明。
第一个场景:战场上,B要给A传递一条消息,内容为某一指令。
RSA的加密过程如下:
(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。
(2)A传递自己的公钥给B,B用A的公钥对消息进行加密。
(3)A接收到B加密的消息,利用A自己的私钥对消息进行解密。
在这个过程中,只有2次传递过程,第一次是A传递公钥给B,第二次是B传递加密消息给A,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行解密,防止了消息内容的泄露。
**第二个场景:**A收到B发的消息后,需要进行回复“收到”。
RSA签名的过程如下:
(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。
(2)A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给B。
(3)B收到消息后,在获取A的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是A回复的。
在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。
但是,综合两个场景你会发现,第一个场景虽然被截获的消息没有泄露,但是可以利用截获的公钥,将假指令进行加密,然后传递给A。第二个场景虽然截获的消息不能被篡改,但是消息的内容可以利用公钥验签来获得,并不能防止泄露。所以在实际应用中,要根据情况使用,也可以同时使用加密和签名,比如A和B都有一套自己的公钥和私钥,当A要给B发送消息时,先用B的公钥对消息加密,再对加密的消息使用A的私钥加签名,达到既不泄露也不被篡改,更能保证消息的安全性。
加密实战
博主你哔哩哔哩这么多,我已经知道了RSA是干什么了。不就是 公钥加密、私钥解密、私钥签名、公钥验签
实战准备
1、新建一个springboot项目
springboot_api_encryption
2、引入maven依来
<dependency> <groupId>cn.shuibo</groupId> <artifactId>rsa-encrypt-body-spring-boot</artifactId> <version>1.0.1.RELEASE</version> </dependency>
3、启动类Application中添加@EnableSecurity注解
@SpringBootApplication @EnableSecurity public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
4、在application.yml或者application.properties中添加RSA公钥及私钥
公钥私钥的生成文章后面会放出生成工具
rsa: encrypt: open: false # 是否开启加密 true or false showLog: true # 是否打印加解密log true or false publicKey: # RSA公钥 软件生成 privateKey: # RSA私钥 软件生成
5、对Controller 里面的API方法进行加密
@Encrypt @GetMapping("/encryption") public TestBean encryption(){ TestBean testBean = new TestBean(); testBean.setName("shuibo.cn"); testBean.setAge(18); return testBean; }
6、对传过来的加密参数解密
其他java端程序可以用注解,如果是vue,请用RSA密钥解密
@Decrypt @PostMapping("/decryption") public String Decryption(@RequestBody TestBean testBean){ return testBean.toString(); }
真刀真枪
1、引入maven
2、启动类添加注解
3、YML添加配置密钥
4、创建一个实体类
5、写一个对外API接口
6、启动项目
请求地址: http://localhost:8080/encryption
我们看到返回的数据未加密
7、修改
修改open为true 打开加密
rsa: encrypt: open: true # 是否开启加密 true or false showLog: true # 是否打印加解密log true or false publicKey: # RSA公钥 软件生成 privateKey: # RSA私钥 软件生成
8、再次重启项目
请求地址: http://localhost:8080/encryption
我们看到返回的数据已加密
9、加密日志
解密实战
如果是其他springboot项目,跟前面一样。我们这儿就当客户端是springboot项目,其他的请使用RSA解密协议解密!
服务端有私密钥、跟公密钥
前端只需要公密钥就可以
实战准备
在原来的springboot基础上写一份解密方法
1、前端js解密方法
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/jsencrypt/3.0.0-rc.1/jsencrypt.js"></script>
2、后台增加解密方法
/** * 解密 * @param user * @return */ @PostMapping("/decryption") @Decrypt @ResponseBody public String Decryption(@RequestBody User user){ System.out.println(user.toString()); return user.toString(); }
3、js方法
#公钥 var PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAobhGH4WMwMvJRUlTxWrCVIOQtsHijAxPJNvAWAgq80ADpFEWrpbcGB9cKqp6XHRH4k/CVtCUZ7jm9UKwhaeAm18sKtcwe+M8JFNX6FSHpgde0o8C9S/QpcmLxf4iN7nGZ7P3ZTvMdmKUcdRMsVQnsydG2Bj6gRxP2+kexEebTeODbdM7dHlkxAL0RxGWmX/ZOBzsoWZw2gKcC0vxwyIZBGHUdImG2T3nEA+VMfK2Yqv3uSYukmlKP+0mjfhrTtLFDuTV1VER9BfryBMvpQCxLO4pqgZnXPd+SOQcZHZ2OL0wqo5OX1+GPYx7TNxz5Qi76pK//T2mH7s6X/BuyT21HQIDAQAB'; /** * 加密方法 * @returns {PromiseLike<ArrayBuffer>} * @constructor */ function RSA_encryption(jsonData) { var encrypt = new JSEncrypt(); encrypt.setPublicKey('-----BEGIN PUBLIC KEY-----' + PUBLIC_KEY + '-----END PUBLIC KEY-----'); var encrypted = encrypt.encrypt(JSON.stringify(jsonData)); console.log('加密前数据:%o', str); console.log('加密后数据:%o', encrypted); return encrypted; } /** * 提交方法 */ function tijiao() { var str = { "name":"1223334", "password":"asd", age:1 }; $.ajax({ url: "/decryption", type : "POST", contentType: "application/json;charset=utf-8", data : RSA_encryption(str) , success : function(data) { alert(data); } }) }
真刀真枪
1、 Controller添加解密方法接口
2、前端页面引入js以及方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 加密传后端,后端解密 <button id="jiami" onclick="tijiao()">加密传后端</button> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/jsencrypt/3.0.0-rc.1/jsencrypt.js"></script> <script> var PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAobhGH4WMwMvJRUlTxWrCVIOQtsHijAxPJNvAWAgq80ADpFEWrpbcGB9cKqp6XHRH4k/CVtCUZ7jm9UKwhaeAm18sKtcwe+M8JFNX6FSHpgde0o8C9S/QpcmLxf4iN7nGZ7P3ZTvMdmKUcdRMsVQnsydG2Bj6gRxP2+kexEebTeODbdM7dHlkxAL0RxGWmX/ZOBzsoWZw2gKcC0vxwyIZBGHUdImG2T3nEA+VMfK2Yqv3uSYukmlKP+0mjfhrTtLFDuTV1VER9BfryBMvpQCxLO4pqgZnXPd+SOQcZHZ2OL0wqo5OX1+GPYx7TNxz5Qi76pK//T2mH7s6X/BuyT21HQIDAQAB'; /** * 加密方法 * @returns {PromiseLike<ArrayBuffer>} * @constructor */ function RSA_encryption(jsonData) { var encrypt = new JSEncrypt(); encrypt.setPublicKey('-----BEGIN PUBLIC KEY-----' + PUBLIC_KEY + '-----END PUBLIC KEY-----'); var encrypted = encrypt.encrypt(JSON.stringify(jsonData)); console.log('加密前数据:%o', jsonData); console.log('加密后数据:%o', encrypted); return encrypted; } /** * 提交方法 */ function tijiao() { var str = { "name":"1223334", "password":"asd", age:1 }; $.ajax({ url: "/decryption", type : "POST", contentType: "application/json;charset=utf-8", data : RSA_encryption(str) , success : function(data) { alert(data); } }) } </script> </body> </html>
3、启动访问
http://localhost:8080
4、后台解密日志
总结
经过上面的接口加密解密操作。可以看出我们的接口如果没有公钥、或者私钥别人根本无法解密!这样就对API接口起到了很好的保护作用,防止别人抓包!
祝大家:每天学习一点,技术成长飞快
项目坑点
此项目的demo无法访问,难点就在前端如何加密回传到后台解密,此坑我带大家爬出来了!
以下是主意事项:
1、主意ajax的 contentType: “application/json;charset=utf-8”
$.ajax({ url: "/decryption", type : "POST", contentType: "application/json;charset=utf-8", data : RSA_encryption(str) , success : function(data) { alert(data); } })
2、解密方法必须 @RequestBody
@PostMapping("/decryption") @Decrypt @ResponseBody public String Decryption(@RequestBody User user){ System.out.println(user.toString()); return user.toString(); }
源代码获取:
https://github.com/pengziliu/GitHub-code-practice
-
API加密框架原理解密
2019-03-02 11:01:07关于框架的使用文章请参考: 前后端API交互如何保证数据安全...API数据加密框架monkey-api-encrypt:http://cxytiandi.com/blog/detail/36171 monkey-api-encrypt 1.1.2版本发布啦:http://cxytiandi.com/blog/detai...关于框架的使用文章请参考:
前后端API交互如何保证数据安全性?:http://cxytiandi.com/blog/detail/20235
API数据加密框架monkey-api-encrypt:http://cxytiandi.com/blog/detail/36171
monkey-api-encrypt 1.1.2版本发布啦:http://cxytiandi.com/blog/detail/36179
今天的主题是带领大家去了解框架的实现原理以及如何去封装一个框架,封装框架的时候需要考虑哪些东西。
我一直有录制视频教程的习惯,这个框架的原理讲解同样也是视频录制的,感兴趣的朋友可以点击下面的链接进行学习。
http://cxytiandi.com/course/22
课程大纲
- 课程介绍
- Spring MVC中使用
- Spring Boot中使用
- 基于Spring的框架开发的原理
- 版本升级,支持基于Servlet的Web框架
- 自定义算法原理
- 注解标识加解密原理
欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程(http://cxytiandi.com/course)
PS:目前星球中正在星主的带领下组队学习Sentinel,等你哦!
-
淘宝API sign加密
2018-09-09 08:46:31淘宝API sign加密,淘宝客API SDK,可以直接请求sign接口 -
HASP加密锁C++api的使用定义.pdf
2022-02-01 05:49:26HASP加密锁C++api的使用定义.pdf -
JAVA版API接口加密方式JAVA版API接口如何加密
2020-09-10 17:06:45PI接口加密方式代码分享API接口加密源代码JAVA版,一下是JAVA完整的加密源代码,含有服务端和客户端demo 我之前写好了一版PHP版本的API接口加密通信DEMO代码 现在这一版是JAVA版API接口加密通信代码,并且这一版的...PI接口加密方式代码分享API接口加密源代码JAVA版,一下是JAVA完整的加密源代码,含有服务端和客户端demo
我之前写好了一版PHP版本的API接口加密通信DEMO代码
现在这一版是JAVA版API接口加密通信代码,并且这一版的客户端Test.java和我写好的PHP服务端是完全互通的
当然下面写好的服务端Encry.java和之前的写的PHP客户端也是互通的,这样做也是为了让同时有JAVA和PHP的程序员们能更好地协作通信
1.加密签名类EncryBean.java
2.服务端:Encry.java
3.客户端:Test.java
这和我之前写好的PHP服务端代码是互通的,这样子也方便用JAVA的小白尽快上手
以下是JAVA版的API接口加密通信源代码,代码含客户端和服务端
1.EncryBean.java是封装的加密生成签名的类文件
```java package encry; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSON; import bean.EncryBean; public class Encry extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); String timeStamp = request.getParameter("t");//获取时间戳 String randomStr = request.getParameter("r");//获取随机串 String signature = request.getParameter("s");//获取签名 PrintWriter out = response.getWriter(); Map<String, Object> map = new HashMap<String, Object>(); if(timeStamp==null && timeStamp==""){ map.put("status", "100");//状态码100时间戳不能为空 } if(randomStr==null && randomStr==""){ map.put("status", "101");//状态码101随机串不能为空 } if(signature==null && signature==""){ map.put("status", "102");//状态码102签名不能为空 } System.out.println("timeStamp"+timeStamp); System.out.println("randomStr"+randomStr); System.out.println("signature"+signature); String TOKEN = "API";//令牌字符串(双方约定) EncryBean a = new EncryBean(); String str = a.arithmetic(timeStamp,randomStr,TOKEN);//通过前台传过来的时间戳跟随机数重新按照签名函数进行生成一遍签名 //然后将传过来签名跟,自己重新生成的签名进行比对 if(str.equals(signature)){ map.put("status", "1");//状态码1成功 }else{ map.put("status", "0");//状态码0签名错误 } String mapJson = JSON.toJSONString(map); out.print(mapJson); out.flush(); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
2.服务端是Encry.java ,这个文件接收客户端请求
package encry; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSON; import bean.EncryBean; public class Encry extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); String timeStamp = request.getParameter("t");//获取时间戳 String randomStr = request.getParameter("r");//获取随机串 String signature = request.getParameter("s");//获取签名 PrintWriter out = response.getWriter(); Map<String, Object> map = new HashMap<String, Object>(); if(timeStamp==null && timeStamp==""){ map.put("status", "100");//状态码100时间戳不能为空 } if(randomStr==null && randomStr==""){ map.put("status", "101");//状态码101随机串不能为空 } if(signature==null && signature==""){ map.put("status", "102");//状态码102签名不能为空 } System.out.println("timeStamp"+timeStamp); System.out.println("randomStr"+randomStr); System.out.println("signature"+signature); String TOKEN = "API";//令牌字符串(双方约定) EncryBean a = new EncryBean(); String str = a.arithmetic(timeStamp,randomStr,TOKEN);//通过前台传过来的时间戳跟随机数重新按照签名函数进行生成一遍签名 //然后将传过来签名跟,自己重新生成的签名进行比对 if(str.equals(signature)){ map.put("status", "1");//状态码1成功 }else{ map.put("status", "0");//状态码0签名错误 } String mapJson = JSON.toJSONString(map); out.print(mapJson); out.flush(); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
3.客户端调用是Test.java
package bean; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class Test { public static String interfaceUtil(String path,String data) { StringBuilder sb = new StringBuilder(); try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod("GET");//GET和POST必须全大写 conn.connect(); InputStream is = conn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = ""; while ((str = br.readLine()) != null) { str=new String(str.getBytes(),"UTF-8");//解决中文乱码问题 sb.append(str); } is.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } public static void main(String[] args) { String tk = "API";//密钥 String t = System.currentTimeMillis()+"" ;//时间戳; String r = "zf4edLXLl666666666"; //随机串 EncryBean a = new EncryBean(); String s = a.arithmetic(t,r,tk);//生成签名 //String response = interfaceUtil("http://localhost:8080/servlet/Encry?t="+t+"&r="+r+"&s="+s,"");//get请求 String response = interfaceUtil("http://www.myhost.com/api.php?t="+t+"&r="+r+"&s="+s,"");//get请求 System.out.println(response); } }
以上就是JAVA版的API接口加密代码,技术交流微信:15889726201
-
Microsoft CryptoAPI加密技术
2016-10-26 16:50:31Microsoft CryptoAPI加密技术 在这个信息爆炸的时代,我们不得不对信息的安全提高警惕。加密作为保障数据信息安全的一种方式,越来越受到人们的关注。 下面,我将把自己对Microsoft CryptoAPI的一些肤浅的理解与... -
cryptocurrency-Price-API:加密货币价格API-使用PHP
2021-05-27 19:23:41加密货币-价格-API 加密货币价格API-使用PHP特征html,css,引导程序PHP 经济学中的api 缓存和更新时间显示限制对于限制显示:(index.php)-只需更改第30行$ limit变量值 <?php $limit = 15; $counter = 0; ... -
VC6实例cryptoapi加密数字签名
2011-04-16 09:26:53• 基本加密函数:用于选择CSP、建立CSP连接、产生密钥、交换及传输密钥等操作。 • 证书编/解码函数:用于数据加密、解密、哈希等操作。这类函数支持数据的加密/解密操作;计算哈希、创建和校验数字签名操作;实现... -
API 接口加密及请求参数加密
2019-09-25 14:40:26在API开发过程中我们不妨会考虑接口安全问题;那么该如何防范呢,以下是我个人的简单总结。 这里只讨论数据加密问题,不讨论token认证问题,关于token认证问题,可以参考其他相关博客。 以下是本人用过的几种... -
wlanapi 加密和无密码连接
2012-04-09 10:01:44用wlanapi写的连接程序使用与xp和win7 -
基于JWE的API加密方案设计
2017-12-29 18:00:10数据安全的范畴很大,包含:技术安全、服务安全、存储安全、传输安全等,本文主要是从传输安全的层面,设计一种基于JWE的API加密方案。 名词说明 **JWE ** JSON Web Encryption ,详细资料:... -
前后端分离API接口如何加密 —— AES加密方案
2020-08-18 11:13:29场景还原:页面中需要展示手机号,身份证号,因为是前后端分离,所有接口API地址有可能暴露,这样不怀好意的人可以拿到个人敏感信息 解决方案: 1. 敏感信息加掩码,例如:接口返回130**12这样的手机号。弊端:在... -
Win32API 实现 AES/DES/3DES 加密,包括零填充
2022-06-02 06:57:57第三,我只放了最常用的三种对称加密 AES/DES/3DES,至于 RC4 之流就不做示范了,那种还不如自己写纯源码;。第四,RSA 没有放进去,说实话 CSP 的 RSA 弱得要命,又慢,限制又多,将来会放进去(其实主要是我自己也... -
cryptocurrency-api:从加密货币 API 请求数据
2021-05-31 09:01:33从加密货币 API 请求数据 :heavy_dollar_sign: 使用 Coin Market Cap API 的 Web 项目在 React Web Developer训练营中进行的练习。项目老师 :woman_teacher: -
API接口开发 dome源码 加密 鉴权验证
2018-11-29 11:14:28开发安全的API接口(参数加密+超时处理+私钥验证+Https)- 续(附demo)4种加密方式的Dome -
api接口数据加密方案一则
2018-02-27 17:34:59Api在传输过程中可能被窃听,某些情况下需要对api进行加密。 当然可以使用https 本文介绍另一种加密方式 解决方案 需要联合使用对称加密AES与非对称加密RSA 每次调用客户端随机产生一个aes密码,并把调用... -
asp.net mvc webapi 实用的接口加密方法示例
2020-10-19 02:08:47本篇文章主要介绍了asp.net mvc webapi 实用的接口加密方法示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
优雅的处理API 接口敏感数据加密解密
2021-09-16 14:48:15优雅的处理API 接口敏感数据加密解密 前言 最近遇到了很多网站爬取和反爬取的问题,所以在此分享一种简单的 api 接口加密策略。 我们与客户端的接口交互过程中,为了更高的安全性,防止数据被其他人抓取,可能需要... -
api接口加密
2020-05-07 13:55:43注意是‘传输过程’,也就是说,客户端请求服务器的过程中,请求被中间人拦截,中间人拿到的是被加密过后的数据,无法解密的。 加密的过程: 这里涉及两个概念。 1.对称加密 对称加密,双方商定一个密码并同时... -
使用Win32 加密API 来进行加密操作
2017-09-30 11:48:39原文链接https://www.codeproject.com/Articles/11578/Encryption-using-the-Win-Crypto-API介绍 如今,信息技术的使用变得越来越复杂...安全的一个部分是加密。人们通常认为安全仅仅是随后插入的东西,这是绝对不正确