网络通信中使用的算法 - 你过来看看 - SegmentFault



网络通信中使用的算法 - 你过来看看 - SegmentFault

加密算法的作用一般都是为了解决通信过程中出现的三个问题 :

  • 身份验证

  • 数据完整性校验

  • 数据机密性

我们之后所讲的所有加密算法, 都是围绕着这三个问题展开的.

单向加密算法

这种加密算法有两个特点 :

  • 加密过程不可逆.即明文通过加密生成密文,但是无法通过密文推算出明文

  • 不同的数据加密出来的结果肯定不一样,不存在不同的数据加密之后生成同样的密文.

  • 定长输出.即不管对多大的数据进行加密,加密之后的结果肯定是定长的.

根据上面的前两个特性,我们可以利用单向加密算法可以用来保证数据完整性.

我们假设 :
A要发送一段数据给B,在发送的过程中可能会被C截取,C截取并修改数据之后发送给B,这种攻击称为中间人攻击.为了保证数据在通信过程中不被篡改,A使用单向加密算法对数据进行加密,然后生成的密文我们成为特征码,把特征码附加在数据之后,一起发送给B.这样子C即时截取修改了数据再发送给B.B只要把数据重新加密生成特征码,跟附加在数据之后的特征码进行比较,就可以知道数据被中间人修改过了.

典型的加密算法有MD5,SHA1等等.在网上下载东西的时候会听过MD5校验,就是利用了单向加密算法的特性.下载的软件旁边会附带一串MD5值,下载完成后可以对下载的软件进行MD5计算,然后比较附带的MD5值,来保证软件没有被篡改.


Read full article from 网络通信中使用的算法 - 你过来看看 - SegmentFault


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts