写给大家看的RSA加密算法_安企神电脑终端安全管理监控软件
安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能对比
下载中心
购买咨询
客户列表
关于安企神

写给大家看的RSA加密算法

更新时间:2022-10-28 15:46:30


本文简介:前段时间看的《王牌特工》帅气的科林叔一把绅士伞在手,天下我有的气势征服了所有观众,凡是特工就没有不和加密解密打交道的,我们经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫无意义的数字苦恼,忽然灵光一闪,翻出一本厚书,将第一个数字对应页码数,第二个数字对应行数,第三个数字对应那一行的某个词。数字变成了一串非常有意义的话:Eat the beancurd with the peanut. Tas

写给大家看的RSA加密算法

前段时间看的《王牌特工》帅气的科林叔一把绅士伞在手,天下我有的气势征服了所有观众,凡是特工就没有不和加密解密打交道的,我们经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫无意义的数字苦恼,忽然灵光一闪,翻出一本厚书,将第一个数字对应页码数,第二个数字对应行数,第三个数字对应那一行的某个词。数字变成了一串非常有意义的话:

Eat the beancurd with the peanut. Taste like the ham.

主角喜极而泣……

这种加密方法是将原来的某种信息按照某个规律打乱。某种打乱的方式就叫做密钥(cipher code)。发出信息的人根据密钥来给信息加密,而接收信息的人利用相同的密钥,来给信息解密。就好像一个带锁的盒子。发送信息的人将信息放到盒子里,用钥匙锁上。而接受信息的人则用相同的钥匙打开。加密和解密用的是同一个密钥,这种加密称为对称加密(symmetric encryption)。

1

如果一对一的话,那么两人需要交换一个密钥。一对多的话,比如总部和多个特工的通信,依然可以使用同一套密钥。但这种情况下,对手偷到一个密钥的话,就知道所有交流的信息了。二战中盟军的情报战成果,很多都来自于破获这种对称加密的密钥。

1

二战中德军的传奇加密机:Enigma

为了更安全,总部需要给每个特工都设计一个不同的密钥。如果是FBI这样庞大的机构,恐怕很难维护这么多的密钥。在现代社会,每个人的信用卡信息都需要加密。一一设计密钥的话,银行怕是要跪了。

 

对称加密的薄弱之处在于给了太多人的钥匙。如果只给特工锁,而总部保有钥匙,那就容易了。特工将信息用锁锁到盒子里,谁也打不开,除非到总部用唯一的一把钥匙打开。只是这样的话,特工每次出门都要带上许多锁,太容易被识破身份了。总部老大想了想,干脆就把造锁的技术公开了。特工,或者任何其它人,可以就地取材,按照图纸造锁,但无法根据图纸造出钥匙。钥匙只有总部的那一把。

1

上面的关键是锁和钥匙工艺不同。知道了锁,并不能知道钥匙。这样,银行可以将“造锁”的方法公布给所有用户。每个用户可以用锁来加密自己的信用卡信息。即使被别人窃听到,也不用担心:只有银行才有钥匙呢!这样一种加密算法叫做非对称加密(asymmetric encryption)。非对称加密的经典算法是RSA算法。它来自于数论与计算机计数的奇妙结合。

为了了解RSA加密,请听一个卧底的自白:

RSA加密

我是潜伏在龙凤大酒楼的卧底。想让下面信息以加密的方式发送到总部:

A CHEF HIDE A BED

厨子藏起来了一张床!这是如此的重要,需要立即通知总部。千万重要的是,不能让反革命的厨子知道。

第一步是转码,也就是将英文转换成某个对应的数字。这个对应很容易建立,比如:

A B C D E F G H I
1 2 3 4 5 6 7 8 9

将上面的信息转码,获得下面的数字序列:

A CHEF HIDE A BED

1 3856 8945 1 254

这串数字完全没有什么秘密可言。厨子发现了这串数字之后,很容易根据数字顺序,对应字母表猜出来。

为了和狡猾的厨子斗智斗勇,我们需要对这串数字进一步加密。使用总部发给我们的锁,两个数字:3和10。我们分为两步处理。

第一步是求乘方。第一个数字是3,也就是说,总部指示我们,求上面数字串的3次方:

原字符串: 1   3   8   5   6   8   9   4   5   1   2   5   4

三次乘方: 1  27 512 125 216 512 729  64 125   1   8 125  64

第二步是求余数。第二个上锁的数字是10,将上面每个三次乘方除以10,获得其余数:

余数: 1 7 2 5 6 2 9 4 5 1 8 5 4

将这串数字发回总部。中途被厨子偷看到,但一时不能了解其中的意思。如果还是像刚才一样对应字母表的话,信息是:

AGBEFBIDEAHED

这串字母完全不包含正常的单词。

信息到了总部。总部开始用神奇的钥匙来解读。这个钥匙是3。(偷偷告诉你的,别告诉厨子。)

(这里钥匙不小心和之前锁中的一个数字相同。这只是巧合。)

解锁过程也是两步。第一步求钥匙次的乘方,即3次方。第二步求它们除以10(锁之一)的余数。

加密信息:1   7   2   5   6   2   9   4   5   1   8   5   4

三次乘方:1 343   8 125 216   8 729  64 125   1 512 125  64 (这里用的是钥匙的“3”)

除十得余:1   3   8   5   6   8   9   4   5   1   2   5   4

正是我们发送的信息。对应字母表,总部可以立即知道原来的信息。

总结

正如我在“数学与编程”中提到的,数学可以是程序员军火库中有力的武器。加密、解密这一事关IT安全的大课题,却和数论这一纯粹数学学科发生奇妙的关系。RSA算法的数学基础在于欧拉定理。这一诞生了几百年没有什么实用性的数学理论,却在网络时代,找到自己的栖身之处。

加密算法有很多,这次我们只讲RSA算法。公开的加密方式,私有的解密方式。RSA安全的关键在于很难对一个大的整数进行因子分解。相信这次你应该对于RSA加密不再恐惧了吧。

立即下载试用

大家知道的数据防泄密解决方案

数据泄漏是当今互联网领域的一个普遍问题。无论是大型企业还是小型组织,都面临数据泄漏的风险。黑客攻击,员工内部泄漏,存储设施故障等各种原因都可能导致数据泄漏。因此,防止数据泄漏变得越来越迫切。本文将讨论各种数据防泄密解决方案。

数据分类

首先,了解数据类型是非常重要的。不同类型的数据需要不同的安全防护程序。根据数据类别,数据可以分为三类:

1)公开数据:其中包括可以在公共领域发布的信息。人们可以在公共网站上下载这些数据并使用它们,比如政府颁布的公告,法律条款,许可证等等。

2)私人数据:这些数据保存在私人设备或私人网络上。它们是敏感的或隐私性的信息,如银行账户、证书、病例、财务信息等等。这些数据需要特殊的保护措施以保证其安全性。

3)商业数据:这些数据与商业有关。它们通常是机密的和私有的,如市场机会、业务数据和内部计划。

各种数据防泄密解决方案

1)访问控制

访问控制可以防止未经授权的用户访问数据。这种控制机制可以在数据管理系统的前端设置,在所有数据处理流程中确保着严格的授权政策。只有经过授权的用户才能访问数据,并可以根据需要强制规定某些特定的权限(如读/写权限等)。

2)数据备份

进行数据备份是重要的数据防泄密实践。如果失去了数据,那仅仅比泄露出去更加糟糕。数据备份可以在数据处于安全状态时可靠地恢复数据。

3) 磁盘加密

磁盘加密是一种常见的数据安全措施,可以防止未经授权的人访问存储在磁盘上的敏感数据。磁盘加密技术可以在许多平台上使用,包括PC,服务器和移动设备。一个好的加密算法可以令黑客苦不堪言。

4)敏感数据掩盖

换句话说,数据掩盖就是巧妙地隐藏数据。匿名化是数据掩盖的一种形式,可以将特定的数据指向一个完全不相关的信息集合中。其结果是消除了真实的身份信息,保护了用户的隐私。

5)数据加密

数据加密可以是一个措施来防止恶意活动的产生,同时也可以让敏感数据在传输时得到保护。在数据传输过程中,对数据进行加密可以消除数据被偷窥的风险。也可以使用SSL来保护数据的传输,采用暴力破解方法已变得越来越难了。

6)双重验证

双重验证是一种防止未经授权的人访问敏感数据的方法。例如,互联网银行如今必须要求在登录时输入用户名和密码,但双重认证通常需要用户提供第二个凭证,如手机上接收的短信,在此过程中,用户需要通过两个以上的安全层进行验证才能进行访问。

7)访问审计

访问审计在数据管理的前端检测了敏感数据的访问。它可以详细记录在数据系统中发生的事件,并跟踪哪些用户访问特定的数据以及何时访问。这种审计程序可控制和监控访问,防止数据泄露。

8)数据失效保护

数据失效保护功能就是避免数据由于设备故障等原因而丢失。在企业数据库中,这些程序会自动备份和保存数据,以确保数据恢复。在一些情况下,这些程序还将锁定访问数据库,直到数据完全恢复为止。

结论

在当今数字化时代,数据防泄密变得越来越重要。要真正保证数据安全,最好采取多种措施来保护数据。上述内容只是一些数据防泄密的解决方案。但实际上,还有很多类似的方案,可以根据不同的应用而有所不同。针对不同的数据类型,我们可以采用不同的策略。不管数据属于哪种类型,数据泄露都是在单位发生最严重的事故之一,对经济和声誉造成的影响是不可估量的。因此,保障公司的数据安全是非常必要和逐渐变得越来越重要的一个方面。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。/cjwt/16479.html

~article_body_code~