网络安全之数据加密(DES、AES、RSA、MD5)

  刚到公司时,我的工作就是为app端提供相应的接口。之前app使用的是PHP接口,对数据加密方面做得比较少。到使用java接口时,老大开始让我们使用DES加密,进行数据传输,但是后来觉得DES是对称加密,密钥存在客户端不安全,后来就让使用RSA加密:将公钥存在客户端,私钥存放在服务端.这样也就产生了一个问题:虽然客户端发送的加密数据,服务端可以解密,但服务端返回的加密数据,我们客户端没有找到公钥解密算法!而且非对称加密的RSA加密效率较低,一次加密的数据大小也很局限!

  后来,我和ios的哥们商量了一个方案:客户端传递的参数使用RSA公钥加密,另外随机生成一个8位desKey使用RSA公钥加密传递给服务端;服务端使用私钥解密参数及DES密码,再将客户端需要的数据使用desKey进行DES加密后返回给客户端。这样既能保证数据安全,又能提高加密效率!后来老大采用了我们的方案。

下面演示一下DES、AES及RSA的使用:

1.演示DES使用:

<pre class=”brush: java; gutter: true;”>

String plaintext = "hahaGG123哈哈";

String ciphertext = DES.encryptDES(plaintext, DES.PASSWORD_CRYPT_KEY);

System.out.println("明文:" + plaintext);

System.out.println("密钥:" + DES.PASSWORD_CRYPT_KEY);

System.out.println("密文:" + ciphertext);

System.out.println("解密后:" + DES.decryptDES(ciphertext, DES.PASSWORD_CRYPT_KEY));

</pre>

执行结果:

网络安全之数据加密(DES、AES、RSA、MD5)_客户端

DES演示结果

2.演示AES使用:

<pre class=”brush: java; gutter: true;”>

String content = "Hello!12345你好";

String password = "12345678";

//加密

System.out.println("加密前:" + content);

String ciphertext = encryptByPassword(content, password);

System.out.println("加密后:"+ciphertext);

//解密

String decryptResult =decryptByPassword(ciphertext,password);

System.out.println("解密后:" + decryptResult);

</pre>

执行结果

网络安全之数据加密(DES、AES、RSA、MD5)_数据_02

AES演示结果

3.演示RSA使用:

其实RSA的公钥和私钥是等价的,并没有严格的区分,一般自己保留的为私钥,给对方使用的为公钥!

<pre class=”brush: java; gutter: true;”>

//测试字符串

String encryptStr= "12345678";

try {

System.out.println("=============私钥加密,公钥解密===============");

//私钥加密

System.out.println("明文:"+encryptStr);

long encryptstart = System.currentTimeMillis();

String cipherStr = encryptByPrivateKey(encryptStr);

System.out.println("私钥加密密文:"+cipherStr);

long encryptend = System.currentTimeMillis();

System.out.println("encrypt use time:"+(encryptend-encryptstart)+"ms");

//公钥钥解密

long decryptstart = System.currentTimeMillis();

String plaineText = decryptByPublicKey(cipherStr);

System.out.println("解密:"+plaineText);

long decryptend = System.currentTimeMillis();

System.out.println("decrypt use time:"+(decryptend-decryptstart)+"ms");

System.out.println("=============公钥加密,私钥解密!===============");

//公钥加密

System.out.println("明文:"+encryptStr);

encryptstart = System.currentTimeMillis();

cipherStr = encryptByPublicKey(encryptStr);

System.out.println("公钥加密密文:"+cipherStr);

encryptend = System.currentTimeMillis();

System.out.println("encrypt use time:"+(encryptend-encryptstart)+"ms");

//私钥解密

decryptstart = System.currentTimeMillis();

plaineText = decryptByPrivateKey(cipherStr);

System.out.println("解密:"+plaineText);

decryptend = System.currentTimeMillis();

System.out.println("decrypt use time:"+(decryptend-decryptstart)+"ms");

System.out.println("===========获取私钥公钥============");

genKeyPair();//获取密钥对

}catch(Exception e){

e.printStackTrace();

}

</pre>

执行结果:

网络安全之数据加密(DES、AES、RSA、MD5)_公钥加密_03

RSA加密演示结果

我们的方案是这样的:

将Des和Rsa结合使用:将desKey及关键字段(用户id等)使用rsa公钥加密,传到服务器,服务器使用rsa私钥解密,获得desKey及用户id等,并根据id查找用户余额,使用des加密后返回给客户端!

<pre class=”brush: java; gutter: true;”>

@RequestMapping

@ResponseBody

public TotalNote testRsaAndDes(String userId,String desKey){

System.out.println("收到请求!");

TotalNote note = new TotalNote();

try{

System.out.println(userId);

//使用私钥解密

userId = RSA.decryptByPrivateKey(userId);

desKey = RSA.decryptByPrivateKey(desKey);

//查找数据库获取用户,账户余额等关键字段,使用des进行加密

String account = "10000.0";

account = DES.encryptDES(account, desKey);

note.setError_code(StatusCode.SUCCESS_CODE);

note.setError_message("获取数据成功!");

note.setData(account);

return note;

}catch(Exception e){

e.printStackTrace();

note.setError_code(StatusCode.ERROR_CODE);

note.setError_message(StatusCode.ERROR_MESSAGE);

return note;

网络安全学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

需要网络安全学习路线和视频教程的可以在评论区留言哦~

最后
  • 如果你确实想自学的话,我可以把我自己整理收藏的这些教程分享给你,里面不仅有web安全,还有渗透测试等等内容,包含电子书、面试题、pdf文档、视频以及相关的课件笔记,我都已经学过了,都可以免费分享给大家!

给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。坚持住,既然已经走到这条路上,虽然前途看似困难重重,只要咬牙坚持,最终会收到你想要的效果。

黑客工具&SRC技术文档&PDF书籍&web安全等(可分享)

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施
,从而减少由网络安全而带来的经济损失

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33131.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习知识:softlabel策略

目录 一、hard label和soft label之间的关系 二、如何得到soft label 1. 回归任务&#xff1a;使用离散化方法生成软标签 PS: Soft 标签的定义规则 2. ​分类任务&#xff1a;使用 Label Smoothing 或 Knowledge Distillation 方法1&#xff1a;Label Smoothing PS: 用 …

自然语言处理:文本聚类

介绍 大家好&#xff0c;博主又来和大家分享自然语言处理领域的知识了。今天给大家分享的内容是自然语言处理中的文本聚类。 文本聚类在自然语言处理领域占据着重要地位&#xff0c;它能将大量无序的文本按照内容的相似性自动划分成不同的类别&#xff0c;极大地提高了文本处…

Python----计算机视觉处理(opencv:像素,RGB颜色,图像的存储,opencv安装,代码展示)

一、计算机眼中的图像 像素 像素是图像的基本单元&#xff0c;每个像素存储着图像的颜色、亮度和其他特征。一系列像素组合到一起就形成 了完整的图像&#xff0c;在计算机中&#xff0c;图像以像素的形式存在并采用二进制格式进行存储。根据图像的颜色不 同&#xff0c;每个像…

Spring Boot(十六):使用 Jenkins 部署 Spring Boot

Jenkins 是 Devops 神器&#xff0c;本篇文章介绍如何安装和使用 Jenkins 部署 Spring Boot 项目 Jenkins 搭建、部署分为四个步骤&#xff1b; 第一步&#xff0c;Jenkins 安装 第二步&#xff0c;插件安装和配置 第三步&#xff0c;Push SSH 第四步&#xff0c;部署项目 第…

【Linux 指北】常用 Linux 指令汇总

第一章、常用基本指令 # 注意&#xff1a; # #表示管理员 # $表示普通用户 [rootlocalhost Practice]# 说明此处表示管理员01. ls 指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xf…

解决Windows版Redis无法远程连接的问题

&#x1f31f; 解决Windows版Redis无法远程连接的问题 在Windows系统下使用Redis时&#xff0c;很多用户会遇到无法远程连接的问题。尤其是在配置了Redis并尝试通过工具如RedisDesktopManager连接时&#xff0c;可能会报错“Cannot connect to ‘redisconnection’”。今天&am…

大语言模型学习及复习笔记(1)语言模型的发展历程

1.大模型进入人们视野 ChatGPT 于2022年11月底上线 模型名称 发布时间 核心突破 GPT-3 2020年6月 首款千亿参数模型&#xff0c;少样本学习 GPT-3.5-Turbo 2022年11月 对话能力优化&#xff0c;用户级应用落地 GPT-4 2023年3月 多模态、强逻辑推理 GPT-4o / GPT-4…

MySQL中count(*)与count(字段区别)

核心规则 表达式 统计规则 COUNT(*) 统计所有行数&#xff08;包括所有字段为NULL的行&#xff09;。 COUNT(字段) 仅统计该字段不为NULL的行数&#xff08;若字段为NULL则自动忽略该行&#xff09;。 误区 A表连接B表&#xff0c;若A和B是一对多的关系时&#xff0c;会出现…

【Unity】在项目中使用VisualScripting

1. 在packagemanager添加插件 2. 在设置中进行初始化。 Edit > Project Settings > Visual Scripting Initialize Visual Scripting You must select Initialize Visual Scripting the first time you use Visual Scripting in a project. Initialize Visual Scripting …

vue 仿deepseek前端开发一个对话界面

后端&#xff1a;调用deepseek的api&#xff0c;所以返回数据格式和deepseek相同 {"model": "DeepSeek-R1-Distill-Qwen-1.5B", "choices": [{"index": 0, "delta": {"role": "assistant", "cont…

基于Spring Boot的小区疫情购物系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

【openwebui 搭建本地知识库(RAG搭建本地知识库)】

安装准备 openwebui 这个本地安装之前写过使用python安装。也可以直接用docker 命令 docker run --rm -d \-p 3080:8080 \-p 3081:8081 \-e WEBUI_AUTHtrue \-e DEFAULT_LOCALEcn \-e GLOBAL_LOG_LEVEL"INFO" \-e AIOHTTP_CLIENT_TIMEOUT100 \--privilegedtrue \-…

Linux 提权

文章目录 前言1. 内核漏洞提权脏牛&#xff08;CVE-2016-5195&#xff09; 2. 不安全的系统配置项2.1 SUID/SGID提权2.2 sudo提权2.3 定时任务提权2.4 capabilities提权 3. 第三方软件提权Tomcat managerNginx本地提权&#xff08;CVE-2016-1247&#xff09;Redis未授权 4. 参考…

谷粒商城:性能压测JVM堆区

目录 Kit Apache JMeter VisualVM 堆内存 jvm内存模型 垃圾回收&#xff08;Garbage Collection, GC&#xff09; 新对象分配内存 GC步骤 MinorGC 性能优化 影响因素 优化 nginx动静分离 优化三级分类获取 Jvm参数配置堆区 测试 Kit Apache JMeter 压力测试&…

TCP协议支持全双工原因TCP发送接收数据是生产者消费者模型

一、TCP支持全双工的原因 TCP协议支持全双工&#xff0c;即使用TCP协议进行通信时&#xff0c;服务端和客户端可以同时进行数据的发送和接收&#xff0c;互不干扰&#xff0c;实现同时双向传输数据。 这是因为使用TCP协议通信时&#xff0c;读写套接字的文件描述符既用来发送…

观成科技:​加密C2框架Platypus流量分析

一、工具介绍 Platypus 是一款支持多会话的交互式反向 Shell 管理器。在实际的渗透测试中&#xff0c;为了解决 Netcat/Socat 等工具在文件传输、多会话管理方面的不足,该工具在多会话管理的基础上增加了在渗透测试中能更好发挥作用的功能&#xff08;如&#xff1a;交互式 Sh…

在 C# 中,is null 和 == null ‌不完全等价‌

最近遇到了一个看似奇怪的问题&#xff0c;判断一个对象是否为null&#xff0c;我使用了null来判断&#xff0c;结果他是null但是仍然进入了判断。 经过讨论和验证&#xff0c;发现使用is null 可以解决问题&#xff0c;于是查阅了资料。 在 C# 中&#xff0c;is null 和 nul…

go语言zero框架拉取内部平台开发的sdk报错的修复与实践

在开发过程中&#xff0c;我们可能会遇到由于认证问题无法拉取私有 SDK 的情况。这种情况常发生在使用 Go 语言以及 Zero 框架时&#xff0c;尤其是在连接到私有平台&#xff0c;如阿里云 Codeup 上托管的 Go SDK。如果你遇到这种错误&#xff0c;通常是因为 Go 没有适当的认证…

VBA+FreePic2Pdf 找出没有放入PDF组合的单个PDF工艺文件

设计部门针对某个项目做了一个工艺汇总报告&#xff0c;原先只要几十个工艺文件&#xff0c;组合成一个PDF&#xff0c;但后来要求要多放点PDF进去&#xff0c;但工艺文件都混在一起又不知道哪些是重复的&#xff0c;找上我让我帮忙处理一下&#xff0c;我开始建议让她重新再组…

Webservice如何调用

webservice调用方式&#xff1a; &#xff08;1&#xff09;http方式调用 请求头增加Content-type:text/xml 或application/soapxml SOAPAction:方法名 请求body以xml字符串传递&#xff0c;xml格式定义 返回以xml字符串返回&#xff0c;xml某个字段是一个json字符串。 入…