前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在MATLAB中RSA加密

在MATLAB中RSA加密

作者头像
万木逢春
发布于 2019-05-10 08:21:59
发布于 2019-05-10 08:21:59
2K0
举报
文章被收录于专栏:帮你学MatLab帮你学MatLab

RSA

先来一个在加密时要避免的:

千万不要将文字加在图像上再进行图像处理

千万不要将文字加在图像上再进行图像处理

千万不要将文字加在图像上再进行图像处理

clc

clear

close all

% B要给A传递一条消息,内容为某一指令

% RSA的加密过程如下:

% (1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。

% 公钥为公开的,任何人可以获取。

% (2)A传递自己的公钥给B,B用A的公钥对消息进行加密。

% (3)A接收到B加密的消息,利用A自己的私钥对消息进行解密。

% 在这个过程中,只有2次传递过程,第一次是A传递公钥给B

% 第二次是B传递加密消息给A,即使都被敌方截获,也没有危险性,

% 因为只有A的私钥才能对消息进行解密,防止了消息内容的泄露。

Text = 'kill the soldier';

Message = int32(Text);

fprintf('-输入-\n')

fprintf('原始信息: ''%s''\n', Text)

fprintf('对应数值: %s\n', num2str(Message))

%% 生成密钥对

[Modulus, PublicExponent, PrivateExponent] = GenerateKeyPair;

fprintf('\n-密钥对-\n')

fprintf('Modulus: '), fprintf('%5d\n', Modulus)

fprintf('公钥: '), fprintf('%5d\n', PublicExponent)

fprintf('私钥: '), fprintf('%5d\n', PrivateExponent)

%% Encrypt / Decrypt

Ciphertext = Encrypt(Modulus, PublicExponent, Message);

RestoredMessage= Decrypt(Modulus, PrivateExponent, Ciphertext);

fprintf('\n-输出-\n')

fprintf('密文数值: %s \n', num2str(Ciphertext))

fprintf('密文: ''%s''\n', char(Ciphertext))

%% Sign / Validate

% A收到B发的消息后,需要进行回复“收到”。

% RSA签名的过程如下:

% (1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。

% (2)A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给B。

% (3)B收到消息后,在获取A的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是A回复的。

% 在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。

Signature = Sign(Modulus, PrivateExponent, Message);

IsVerified = Verify(Modulus, PublicExponent, Message, Signature);

fprintf('\n-验证签名-\n')

fprintf('签名: %s [ %s ]\n', num2str(Signature), char(Signature))

fprintf('是否通过: %d\n', IsVerified)

% 综合两个场景就会发现,第一个场景虽然被截获的消息没有泄露,但是可以利用截获的公钥,将假指令进行加密,然后传递给A。第二个场景虽然截获的消息不能被篡改,但是消息的内容可以利用公钥验签来获得,并不能防止泄露。所以在实际应用中,要根据情况使用,也可以同时使用加密和签名,比如A和B都有一套自己的公钥和私钥,当A要给B发送消息时,先用B的公钥对消息加密,再对加密的消息使用A的私钥加签名,达到既不泄露也不被篡改,更能保证消息的安全性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帮你学MatLab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python接口自动化之通过RSA加解密
Hi,大家好。在之前的文章:Python实现各种加密,接口加解密不再难,介绍了Base64、MD5、Sha1、Secret、RSA等几种加密方式,今天结合项目具体介绍RSA加密。
可可的测试小栈
2022/03/10
2.4K0
Python接口自动化之通过RSA加解密
非对称加密之RSA是怎么加密的
前几天阿粉刚刚说了这个 MD5 加密的前世今生,因为 MD5 也确实用的人不是很多了,阿粉就不再继续的一一赘述了,今天阿粉想给大家分享的,是非对称加密中的一种,那就是 RSA 加密算法。
Java极客技术
2022/12/04
1.2K0
【深度知识】RSA加密、解密、签名、验签的原理及方法
RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。者能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称之为公钥和私钥。如果用公钥进行加密,则只能通过对应的私钥去解密,如果用私钥进行加密,则只能通过对应的公钥去解密。两者之间有数字相关,该加密发酸的原理就是对一极大整数做因数分解的困难行来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)
辉哥
2021/03/02
6.8K0
【深度知识】RSA加密、解密、签名、验签的原理及方法
这个轮子让SpringBoot实现api加密So Easy!
在项目中,为了保证数据的安全,我们常常会对传递的数据进行加密。常用的加密算法包括对称加密(AES)和非对称加密(RSA),博主选取码云上最简单的API加密项目进行下面的讲解。
JAVA葵花宝典
2020/06/04
3.5K1
这个轮子让SpringBoot实现api加密So Easy!
Spring Boot接口返回及入参RSA加解密
RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有)。
Bobby
2020/06/10
5.3K0
Spring Boot接口返回及入参RSA加解密
接口数据使用了 RSA 加密和签名?一篇文章带你搞定
接下来我们就来使用 python 来实现 RSA 加密与签名,使用的第三方库是 Crypto:
程序员白楠楠
2021/08/27
2.1K0
如何使用RSA 对数据加解密和签名验签?一篇文章带你搞定
加密是指利用某个值(密钥)对明文的数据通过一定的算法变换加密(密文)数据的过程,它的逆向过程叫解密。
用户8949263
2022/04/08
5.7K0
如何使用RSA 对数据加解密和签名验签?一篇文章带你搞定
php生成数字签名的几种方法
HMAC(散列消息认证码) 使用密钥和散列函数对消息进行加密,并用结果生成一个数字签名。
超级小可爱
2024/02/24
6650
随笔记录之RSA 盲签名
欧拉函数(Euler's totient function),记作φ(n),是数论中的一个重要函数。
bowenerchen
2023/08/31
1.5K15
随笔记录之RSA 盲签名
Java安全编程:公钥加密和私钥签名的实践指南
在数字通信和数据保护领域,非对称加密技术扮演着至关重要的角色。这种技术涉及两种关键操作:使用公钥进行加密和使用私钥进行签名。这两种操作虽然使用相似的技术,但它们的目的、安全需求和实现方式却大相径庭。
陆业聪
2024/10/28
3280
Java安全编程:公钥加密和私钥签名的实践指南
数据安全RSA算法,加密解密,签名验签流程详解
(1)、乙方生成一对密钥即公钥和私钥,私钥不公开,乙方自己持有,公钥为公开,甲方持有。
知了一笑
2019/10/23
2.2K0
数据安全RSA算法,加密解密,签名验签流程详解
加密,各种加密,耙梳加密算法(Encryption)种类以及开发场景中的运用(Python3.10)
    不用说火爆一时,全网热议的Web3.0区块链技术,也不必说诸如微信支付、支付宝支付等人们几乎每天都要使用的线上支付业务,单是一个简简单单的注册/登录功能,也和加密技术脱不了干系,本次我们耙梳各种经典的加密算法,试图描摹加密算法在开发场景中的运用技巧。
用户9127725
2023/03/01
6760
加密,各种加密,耙梳加密算法(Encryption)种类以及开发场景中的运用(Python3.10)
工程师CP反窃听的升(xin)级(lei)打怪?趣聊密码学
本文转载自「阿里技术」。这篇文章比以前见到的更丰满,分享给大家看看!如果喜欢请关注。
烟雨平生
2023/03/07
4290
工程师CP反窃听的升(xin)级(lei)打怪?趣聊密码学
RSA的公钥私钥
非对称加密使用的是RSA算法,所谓的非对称,指的是,加密时使用的秘钥和解密时使用的秘钥是不一样的。也就是说RSA有一对秘钥,其中一个是公钥,另一个是私钥,一个用于加密,一个用于解密。
赵哥窟
2022/04/02
2.6K0
RSA的公钥私钥
非对称密钥沉思系列(2):聊聊RSA与数字签名
在前面的文章《消息验证码MAC入门指南》中,我们围绕消息验证码的工作原理进行了一些分析和实验。
bowenerchen
2022/12/12
2.8K7
C++ CryptoPP使用RSA加解密
Crypto++ (CryptoPP) 是一个用于密码学和加密的 C++ 库。它是一个开源项目,提供了大量的密码学算法和功能,包括对称加密、非对称加密、哈希函数、消息认证码 (MAC)、数字签名等。Crypto++ 的目标是提供高性能和可靠的密码学工具,以满足软件开发中对安全性的需求。RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,由三位密码学家Ron Rivest、Adi Shamir和Leonard Adleman于1977年共同提出。RSA算法被广泛应用于信息安全领域,特别是在数字签名和密钥交换等场景中。
王 瑞
2023/12/01
1.6K0
C++ CryptoPP使用RSA加解密
程序员必备基础:加签验签
前言 我们在求职面试中,经常会被问到,如何设计一个安全对外的接口呢? 其实可以回答这一点,加签和验签,这将让你的接口更加有安全。接下来,本文将和大家一起来学习加签和验签。从理论到实战,加油哦~ 密码学
捡田螺的小男孩
2020/07/21
7.8K1
程序员必备基础:加签验签
​谁再问我加密算法、签名算法、我上去就是一jio
上面的例子只是用来说明网络环境下的数据安全问题,现实中应该没有这么蠢的黑客吧 哈哈。而且像美团、QQ这种软件都有较为完善的机制。
敲得码黛
2021/02/22
5561
​谁再问我加密算法、签名算法、我上去就是一jio
五、数字签名及存在的问题
  上一篇我们说到了消息认证码可以防止假冒和篡改,而无法防止事后否认,这里我们会讲解数字签名为什么能解决这个问题。
砖业洋__
2023/05/06
6350
五、数字签名及存在的问题
鸿蒙开发:加密算法封装
加密算法是开发中常见的业务,为了安全起见,客户端与服务端传输数据,往往是通过加密之后进行通信,这样做的目的,可以保证数据的机密性,防止敏感数据泄露,而鸿蒙系统中,关于加密算法就比较容易实现,毕竟ArkTs是基于TypeScript实现的,所以有些算法之间基本是通用的。
程序员一鸣
2024/12/26
2300
鸿蒙开发:加密算法封装
推荐阅读
相关推荐
Python接口自动化之通过RSA加解密
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档