`
8821249
  • 浏览: 68872 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

加密解密算法与通讯安全(一)

 
阅读更多

平时在工作和生活中,我们会经常接触加密、解密的技术。

尤其在今天网络化的时代里,越来越多的用户会将数据存储在云端,或使用在线的服务处理信息。这些数据有些涉及用户的隐私,有些涉及用户的财产,要是没有一套的方案来解决用户的数据安全问题的话,这将是一个多么可怕的事儿。

同时,我们作为开发者,也会经常遇到用户对数据安全的需求,当我们碰到了这些需求后如何解决,如何何种方式保证数据安全,哪种方式最有效,这些问题经常困惑着我们。那么我们又会碰到哪些安全的风险的。

 

安全性威胁

一般的,我们在网络中传输的数据,都可以认为是存在这潜在的风险的。用一句话来概括就是:“任何在网络中传输的明文数据都存在安全性威胁。”

下面就列举下我们通信中面临的四种威胁:

第一,中断。攻击者有意破坏和切断他人在网络上的通信,这是对可用性的攻击。

第二,截获。属于被动攻击,攻击者从网络上qie听他人的通信内容,破坏信息的机密性。

第三,篡改。攻击者故意篡改网络上传送的报文,这是对完整性的攻击。

第四,伪造。攻击者伪造信息在网络传送,这是对真实性的攻击

 

 

 

加密解密算法

我们经常说加密解密算法是数据安全领域里的“剑”,是一种主动的防护,对数据进行必要的加密处理,以保证其在数据传输、存储中的安全。

 

Base64

严谨的说,base64并不是加密算法,这里提到他是因为他的实现比较简单,通过他的实现,我们可以更好的理解加密解密的过程。

下面看下他是如何“加密”的。假设我们要对“BC”字符串进行加密。现将其转换为二进制表达方式,并连起来:01000010 01000011,接下来对二进制按6位分组,不够6位补0,得到010000100100001100(最后两位补0)。下面查表,找到对应的值“QKM”。那么“QKM”就是“BC”用base64“加密”后的值了。

 

Value

Char

Value

Char

Value

Char

Value

Char

0

A

16

Q

32

g

48

w

1

B

17

R

33

h

49

x

2

C

18

S

34

i

50

y

3

D

19

T

35

j

51

z

4

E

20

U

36

k

52

0

5

F

21

V

37

l

53

1

6

G

22

W

38

m

54

2

7

H

23

X

39

n

55

3

8

I

24

Y

40

o

56

4

9

J

25

Z

41

p

57

5

10

K

26

a

42

q

58

6

11

L

27

b

43

r

59

7

12

M

28

c

44

s

60

8

13

N

29

d

45

t

61

9

14

O

30

e

46

u

62

+

15

P

31

f

47

v

63

/

 

从上面的base64算法,我们可以窥视部分加密的本质:将一段有意义的信息,通过某种方式,映射为一段看不懂的信息。使用函数表达即为:

public Ciphertext encrypted(Plaintext text);

值得注意的是,base64里有一张映射表,如果改变映射表的顺序,最终得到的结果就会跟着改变。有点类似烹调,在相同原料、相同烹调方式下,我们改变加入的调料,最终做出的东西将会也不一样。这里的映射表,我们叫之为“密钥”。

通过base64算法,可以看出,一个加密算法会有两部分组成:密钥、算法。两者不能都公开,都公开的话,就可以被人逆向运算,进行解密。一般的,我们将密钥进行保密,将算法进行公开。算法的公开,有利于算法的推广,普及,更有利于寻找算法中的漏洞。也就是因为base64同时公开了算法、密钥,所以我们说他并不是真正的加密算法。当然如果你调整了上面映射表,那么也能做到加密算法的目的,不过base64加密的强度比较差,所以不建议在实际应用中作为加密算法使用。

  • 大小: 19.7 KB
分享到:
评论

相关推荐

    C语言实现DES加密解密算法

    DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 ...DES 加密解密算法的 C 语言实现需要理解字节与二进制转换、密钥处理、加密和解密操作以及基本操作等知识点。

    Java实现的RSA加密解密算法示例

    RSA加密解密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1978年发明。RSA算法基于大数分解难题的原理,使用公钥加密、私钥解密的方式实现信息的加密和解密。 知识点2:Java中RSA加密...

    300多种加密解密算法(C++)源代码

    300多种加密解密算法(C++)源代码 300多种加密解密算法(C++)源代码

    C语言实现加密解密算法

    本文将深入探讨如何使用C语言实现加密解密算法,并基于提供的文件信息进行讲解。 首先,C语言是一种底层编程语言,它允许直接操作内存,因此非常适合实现复杂的数学运算,如加密算法。常见的加密算法有对称加密(如...

    用C语言实现的AES加密解密算法

    AES,全称Advanced ...总之,C语言实现的AES加密解密算法是一个实用的工具,对于理解加密原理、开发安全软件或进行系统级编程都有很大的价值。然而,使用时应确保正确性,并结合适当的模式和协议来增强整体安全性。

    java实现的RC4加密解密算法示例

    RC4加密解密算法是Symmetric-key block cipher的一种,使用同一个密钥进行加密和解密。java实现的RC4加密解密算法可以通过以下步骤实现: 1. 初始化数组:创建一个大小为256的整数数组,用于存储RC4算法的S-box。 2...

    六个经典的PHP加密解密算法

    经典代码(带详解) 函数authcode($string, $operation, $key, ...第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。

    RSA 加密解密算法C语言 (含linux)

    RSA加密解密算法是公开密钥密码体制的一种典型代表,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,因此得名RSA。这种算法基于大整数因子分解的困难性,即找到两个大素数的乘积很容易,但将该乘积分解回...

    java实现MD5加密解密算法

    java实现MD5加密解密算法,java源代码~

    基于Logistic系统的图像模块混沌加密解密算法

    本文还对基于Logistic系统的图像模块混沌加密解密算法的安全性进行了分析。结果表明,该算法存在安全 weakness,即生成的密钥流对每个图像块保持不变,从而使得攻击者可以使用chosen plaintext attack来恢复等效密钥...

    .net加密解密算法demo

    总的来说,这个.NET加密解密算法demo是一个实用的学习资源,它涵盖了加密解密的基本概念和.NET框架中的实现方式。通过分析和运行这个示例,开发者能够掌握如何在实际项目中应用加密技术,保护用户的隐私和数据安全。...

    文件加密解密算法研究与实现

    《文件加密解密算法研究与实现》这篇硕士论文探讨了如何通过加密技术来保护企业的重要文件,特别是提出了一种基于USBKEY的文件加密解密方案。 #### 二、加密算法研究 论文首先对现有的四种加密方式进行深入的研究...

    很强的Java加密解密算法源码.zip

    在这个"很强的Java加密解密算法源码.zip"中,我们可以深入学习如何在Java中实现3DES算法来加密和解密文件。 3DES算法是一种块加密算法,它通过三次应用DES密钥来增强安全性。基本流程如下: 1. **加密过程**:输入...

    VB实现DES加密解密算法,vb加密和解密,VBA

    这需要创建一个.NET类库项目,实现DES加密解密功能,然后在VBA中通过CreateObject或早绑定的方式调用这些函数。 以下是VB.NET中实现DES加密解密的简单示例代码: ```vbnet Imports System.IO Imports System....

    VB6加密解密算法,支持文件加密解密

    综上所述,VB6的这个加密解密程序是一个实用的工具,结合了DES和AES这两种强大的加密算法,支持用户自定义密钥,且具备文件级别的加密解密功能。它不仅提供了基本的数据安全措施,而且在VB6环境中易于理解和使用,...

    RSA 加密 解密 算法

    RSA加密解密算法,相当不错的例子,适合初学者参考

    C++实现密码学 RSA加密解密算法

    RSA加密解密算法是密码学中一种常用的加密算法,以 Ron Rivest、Adi Shamir 和 Leonard Adleman 三人命名。该算法基于大数分解问题的困难性,使用公钥加密和私钥解密的方式来保护数据的安全。 该算法的基本原理是:...

    C#实现AES加密解密算法

    ### C# 实现 AES 加密解密算法 #### 概述 在计算机科学与信息安全领域,数据加密技术是一项至关重要的技术。AES(Advanced Encryption Standard,高级加密标准)是一种广泛使用的对称加密算法,用于保护敏感数据的...

    密码学课程设计:仿射加密解密算法的实现

    **仿射加密解密算法** 仿射加密是一种古老的密码学方法,源于古希腊时期,它基于线性替换和乘法替换来对明文进行加密。该算法由两个基本操作组成:一个是一次线性变换(Affine Transformation),另一个是模26(或...

    加密算法模块(VC++)-算法源码吧-加密解密算法- C_C++

    本资源“加密算法模块(VC++)”提供了一系列基于C++编写的加密和解密算法,对于开发者来说,是深入理解并应用这些算法的理想起点。 首先,让我们了解一下加密的基本概念。加密是一种将明文数据转化为看似随机的密文...

Global site tag (gtag.js) - Google Analytics