精华内容
下载资源
问答
  • 网络加密

    千次阅读 2015-06-07 22:38:39
    Base64参考网站:http://zh.wikipedia.org/wiki/Base64简介是网络上使用最广泛的编码系统,能够将任何二进制数据,转换成... Base 64 是所有现代加密算法的基础算法 终端命令# 将 10.jpg 进行 base64 编码,生成 10.

    Base64

    参考网站:http://zh.wikipedia.org/wiki/Base64

    简介

    是网络上使用最广泛的编码系统,能够将任何二进制数据,转换成只有 65 个字符组成的文本文件

    a~z,A~Z,0~9,+,/,=
    Base 64 编码后的结果能够反算,不够安全
    Base 64 是所有现代加密算法的基础算法

    终端命令

    # 将 10.jpg 进行 base64 编码,生成 10.txt 文件
    $ base64 10.jpg -o 10.txt
    
    # 将 10.txt 解码生成 1.jpg 文件
    $ base64 -D 10.txt -o 1.jpg
    
    # 将字符串 Man 进行 base64 编码
    $ echo -n "Man" | base64
    
    # 将字符串 TWFu 解码
    $ echo -n "TWFu" | base64 -D
    

    代码实现

    ///  BASE 64 编码
    - (NSString *)base64Encode:(NSString *)str {
        NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    
        return [data base64EncodedStringWithOptions:0];
    }
    
    ///  BASE 64 解码
    - (NSString *)base64Decode:(NSString *)str {
        NSData *data = [[NSData alloc] initWithBase64EncodedString:str options:0];
    
        return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    }

    保存 和 加载用户信息

    ///  保存用户信息
    - (void)saveUserInfo {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    
        [defaults setObject:self.usernameText.text forKey:HMUserNameKey];
    
        NSString *pwd = [self base64Encode:self.pwdText.text];
        [defaults setObject:pwd forKey:HMUserPwdKey];
    
        [defaults synchronize];
    }
    
    ///  加载用户信息
    - (void)loadUserInfo {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    
        self.usernameText.text = [defaults objectForKey:HMUserNameKey];
        self.pwdText.text = [self base64Decode:[defaults objectForKey:HMUserPwdKey]];
    }

    存在的问题

    使用 Base 64 不能直接看到用户密码的明文
    但是 Base 64 的算法是公开的,并且算法可逆,所以安全性并不好

    密码学

    现代密码学 - 所有加密算法都是公开的!

    散列(哈希)函数

    MD5/SHA1/SHA256(美国国家安全局/苹果)/SHA512
    对任意一个二进制数据进行加密,可以得到定长的字符串结果
    MD5 加密结果是 32 个字符
    核心思想是从给定的数据中,抽取特征码,不容易产生重复!加密后的字符串通常被称为“指纹”“信息摘要”
    MD5 因为数据长度不够,现在国外基本上已经不怎么用了!国内用的很普遍
    王小云
    破解网站:http://www.cmd5.com

    相同的字符串,使用相同的算法,每次加密的结果是固定的

    MD5

    约定

    同样的密码,同样的加密算法,每次加密的结果是不一样

    方案一 直接 MD5

    pwd = pwd.md5String;

    方案二 MD5 + 盐

    pwd = [pwd stringByAppendingString:salt].md5String;

    MD5 安全方案三 - HMAC

    pwd = [pwd hmacMD5StringWithKey:@"haliluya"];

    MD5 安全方案四 - 时间戳密码

    pwd = [self timePassword];
    ///  生成时间戳密码
    - (NSString *)timePassword {
        // 1. 以 suday.md5 作为 hmac key
        NSString *key = @"sunday".md5String;
        NSLog(@"HMAC KEY - %@", key);
    
        // 2. 对用户密码 HMAC 加密
        NSString *pwd = [self.pwd hmacMD5StringWithKey:key];
    
        // 3. 取出当前系统时间
        NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
        fmt.dateFormat = @"yyyy-MM-dd HH:mm";
        NSString *dateStr = [fmt stringFromDate:[NSDate date]];
    
        // 4. 拼接时间字符串
        pwd = [pwd stringByAppendingString:dateStr];
    
        // 5. 再次 hmac 散列密码
        return [pwd hmacMD5StringWithKey:key];
    }

    MD5 安全方案五 - 服务器时间戳密码

    /// 生成时间戳密码
    - (NSString *)timePassword:(NSString *)pwd {
        // 1. 以 itheima.md5 作为 hmac key
        NSString *key = @"itheima".md5String;
        NSLog(@"HMAC KEY - %@", key);
    
        // 2. 对密码进行 hamc
        NSString *pwd = [self.pwd hmacMD5StringWithKey:key];
    
        // 3. 取服务器时间
        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://localhost/hmackey.php"]];
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
        NSString *dateStr = dict[@"key"];
    
        // 4. 拼接时间字符串
        pwd = [pwd stringByAppendingString:dateStr];
    
        // 5. 再次 hmac 散列密码
        return [pwd hmacMD5StringWithKey:key];
    }

    对称加密算法

    加密和解密使用同一个秘钥,加密解密的速度快
    适合给大数据进行加密
    注意:秘钥的安全性非常重要
    使用 RSA 给对称加密算法的秘钥进行加密

    非对称加密算法 RSA

    使用 公钥 加密,使用 私钥 解密
    使用 私钥 加密,使用 公钥 解密
    更安全
    但是加密解密的速度极慢!
    适合给小数据进行加密

    对称加密算法 - 传统加密算法

    加密和解密使用同一个密钥

    优缺点

    优点

    算法公开、计算量小、加密速度快、加密效率高

    缺点

    双方使用相同钥匙,安全性得不到保证

    注意事项

    密钥的保密工作非常重要
    密钥要求定期更换

    经典算法

    • DES 数据加密标准(用的少,因为强度不够)
    • 3DES 使用3个密钥,对相同的数据执行三次加密,强度增强
    • AES 高级加密标准,目前美国国家安全局使用的
    • 苹果的钥匙串访问采用的是 AES 加密

    ECB & CBC

    ECB :电子代码本,就是说每个块都是独立加密的
    CBC :密码块链,使用一个密钥和一个初始化向量 (IV)对数据执行加密转换
    OpenSSL 终端测试命令

    ECB

    # 加密
    $ openssl enc -des-ecb -K 616263 -nosalt -in msg1.txt -out msg1.bin
    # 解密
    $ openssl enc -des-ecb -K 616263 -nosalt -in msg1.bin -out msg1.txt -d
    # 查看加密之后的二进制文件
    $ xxd msg1.bin

    CBC

    # 加密
    $ openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in a.txt -out msg1.bin
    # 解密
    $ openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in msg1.bin -out msg4.txt -d
    # 查看加密之后的二进制文件
    $ xxd msg1.bin

    CBC加密可以有效地保证密文的完整性,也就是说如果有一个块在传送时丢失了(或被敌人改变了),就会导致后面所有的块无法正常解密这个特性可以用来防范一些窃听技巧

    代码示例:

    // EBC 加密
    NSLog(@"%@", [CryptorTools AESEncryptString:@"hello" keyString:@"abc" iv:nil]);
    NSLog(@"%@", [CryptorTools AESDecryptString:@"d1QG4T2tivoi0Kiu3NEmZQ==" keyString:@"abc" iv:nil]);
    
    // CBC 加密
    uint8_t iv[8] = {1, 2, 3, 4, 5, 6, 7, 8};
    NSData *ivData = [NSData dataWithBytes:iv length:8];
    
    NSLog(@"%@", [CryptorTools AESEncryptString:@"hello" keyString:@"abc" iv:ivData]);
    NSLog(@"%@", [CryptorTools AESDecryptString:@"u3W/N816uzFpcg6pZ+kbdg==" keyString:@"abc" iv:ivData]);
    OpenSSL 终端测试命令

    ECB 加密/解密

    # AES(ECB)加密
    $ echo -n "hello" | openssl enc -aes-128-ecb -K 616263 -nosalt | base64
    
    # AES(ECB)解密
    $ echo -n "d1QG4T2tivoi0Kiu3NEmZQ==" | base64 -D | openssl enc -aes-128-ecb -K 616263 -nosalt -d

    CBC 加密/解密

    # AES(CBC)加密
    $ echo -n "hello" | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt | base64

    AES(CBC)解密

    $ echo -n "u3W/N816uzFpcg6pZ+kbdg==" | base64 -D | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -d

    终端命令说明

    加密过程是先加密,再base64编码
    解密过程是先base64解码,再解密
    | 是终端管道命令,会将前一个命令结果传递给后一个命令
    -K 使用的密钥需要是密钥的 ASCII 码

    非对称加密算法

    介绍

    非对称加密算法需要两个密钥:公开密钥(publickey) 和 私有密钥(privatekey)
    公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密

    特点

    算法强度复杂、安全性依赖于算法与密钥
    加密解密速度慢

    与对称加密算法的对比

    • 对称加密只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥
    • 非对称密钥体制有两种密钥,其中一个是公开的

    RSA 算法原理

    1. 找出两个“很大”的质数:P & Q
      N = P * Q
      M = (P – 1) * (Q – 1)

    2. 找出整数E,E与M互质,即除了1之外,没有其他公约数

    3. 找出整数D,使得 ED 除以 M 余 1,即 (E D) % M = 1

    4. 经过上述准备工作之后,可以得到:

      • E是公钥,负责加密
      • D是私钥,负责解密
      • N负责公钥和私钥之间的联系
    5. 加密算法,假定对X进行加密

      • (X ^ E) % N = Y
    6. 解密算法,根据费尔马小定义,可以使用以下公式完成解密

      • (Y ^ D) % N = X

    代码示例:

    CryptorTools *tools = [[CryptorTools alloc] init];
    
    // 1. 加载公钥
    NSString *pubKeyPath = [[NSBundle mainBundle] pathForResource:@"rsacert.der" ofType:nil];
    [tools loadPublicKeyWithFilePath:pubKeyPath];
    
    // 2. 使用公钥加密数据
    NSString *cipher = [tools RSAEncryptString:@"abcdefghijklmnopqrstuvwxyz1234567890"];
    NSLog(@"%@", cipher);
    
    // 3. 加载私钥
    NSString *privateKeyPath = [[NSBundle mainBundle] pathForResource:@"p.p12" ofType:nil];
    [tools loadPrivateKey:privateKeyPath password:@"123"];
    
    // 4. 解密数据
    NSLog(@"%@", [tools RSADecryptString:cipher]);

    iOS 相关函数

    • SecKeyEncrypt 使用公钥对数据加密
    • SecKeyDecrypt 使用私钥对数据解密
    • SecKeyRawVerify 使用公钥对数字签名进行验证
    • SecKeyRawSign 使用私钥生成数字签名

    应用场景

    由于RSA算法的加密解密速度要比对称算法的速度慢很多,在实际应用中,通常采取:

    • 数据本身的加密解密使用对称加密算法(AES)
    • 用RSA算法加密并传输对称算法所需的密钥

    终端测试命令

    ##程序开发证书生成
    
    # 生成私钥
    $ openssl genrsa -out private.pem 1024
    # 创建证书请求
    $ openssl req -new -key private.pem -out rsacert.csr
    # 生成证书并签名,有效期10年
    $ openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
    # 转换格式-将 PEM 格式文件转换成 DER 格式
    $ openssl x509 -outform der -in rsacert.crt -out rsacert.der
    # 导出P12文件
    $ openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

    在苹果开发中,不能直接使用 PEM 格式的证书

    • DER 文件是 CRT 文件的 BASE 64 解码前的二进制数据文件*
    • OpenSSL 默认生成的都是 PEM 格式的证书(BASE64 编码后的文本文件)

    数字签名

    • 发送方

      • ”报文” HASH 得到 “报文摘要”
      • “报文摘要” 用公钥加密(数字签名) + 报文
    • 发送给接收方

      • 接收方
      • “报文” HASH 得到 “报文摘要”
      • “数字签名” 用私钥解密 判断是否与 “报文摘要” 相同

    生成密钥示例

    私钥 & 公钥

    # 生成强度是 512 的 RSA 私钥
    $ openssl genrsa -out private.pem 512
    # 以明文输出私钥内容
    $ openssl rsa -in private.pem -text -out private.txt
    # 校验私钥文件
    $ openssl rsa -in private.pem -check
    # 从私钥中提取公钥
    $ openssl rsa -in private.pem -out public.pem -outform PEM -pubout
    # 以明文输出公钥内容
    $ openssl rsa -in public.pem -out public.txt -pubin -pubout -text

    加密 & 解密

    # 使用公钥加密小文件
    $ openssl rsautl -encrypt -pubin -inkey public.pem -in msg.txt -out msg.bin
    # 使用私钥解密小文件
    $ openssl rsautl -decrypt -inkey private.pem -in msg.bin -out a.txt

    格式转换

    # 将私钥转换成 DER 格式
    $ openssl rsa -in private.pem -out private.der -outform der
    # 将公钥转换成 DER 格式
    $ openssl rsa -in public.pem -out public.der -pubin -outform der

    PKCS

    Public-Key Cryptography Standards (PKCS)是由美国 RSA 数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议

    PKCS协议

    协议 <->说明

    • PKCS#1 定义 RSA 公开密钥算法加密和签名机制,主要用于组织 PKCS#7 中所描述的数字签名和数字信封(专门用来加密/解密)
    • PKCS#8 描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等(JAVA使用)
    • PKCS#12 描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法(苹果使用)
    展开全文
  • 网络加密知识

    千次阅读 2005-07-01 17:55:00
    网络加密包括密码技术和网络加密方法两个方面。一、 密码技术 密码技术一般分为常规密码和公钥密码。 常规密码是指收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。比较著名的常规密码算法有...
    网络加密包括密码技术和网络加密方法两个方面。

    一、 密码技术

      密码技术一般分为常规密码和公钥密码。

      常规密码是指收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。比较著名的常规密码算法有DES及其各种变形、IDEA、FEAL、Skipjack、RC4、RC5等。在众多的常规密码中影响最大的是DES密码。

      常规密码的优点是有很强的保密强度,且能经受住时间的检验和攻击,但其密钥必须通过安全的途径传送。因此,其密钥管理成为系统安全的重要因素。

       公钥密码是指收信方和发信方使用的密钥互不相同,而且几乎不可能从加密密钥推导解密密钥。比较著名的公钥密码算法有:RSA、,背包密码、 Mceliece密码、Diffe与Hellman、零知识证明的算法、椭圆曲线、Elgamal等等。最有影响朗公钥密码算法是RSA、它能抵抗到目前 为止已知的所有密码攻击。

      公钥密码的优点是可以适应网络的开放性要求,且密钥管理比较简单,尤其可方便地实现数字签名和验证。但其算法复杂,加密数据的速率较低。尽管如此,随着现代电子技术和密码技术的发展,公钥密码算法将是一种很有前途的网络安全加密体制。

      在实际应用中,人们通常将常规密码和公钥密码结合在一起使用,比如:利用DES或者IDEA来加密信息,而采用RSA来传递会话密钥。

      密码技术是网络安全最有效的技术之一。一个加密网络,不但可以防止非授权用户窃取文件,而且可以验证文件的真实性。

    二、网络加密方法

      一般的数据加密可以用三种方式来实现,即:链路加密、节点加密和端到端加密。

    1、链路加密

       对于在两个网络节点间的某一次通信链路,链路加密能为网上传输的数据提供安全保证。对于链路加密(又称在线加密),所有信息在被传输之前进行加密,在每 一个节点上对接收到的信息进行解密,然后先使用下一个链路的密钥再对信息进行加密,再进行传输。在到达目的地之前,一条信息可能要经过许多通信链路的传 输。

      由于在每一个中间传输节点信息均被解密后重新进行加密,因此,包括路由信息在内的链路上的所有数据均以密文形式出现。这样,链路 加密就掩盖了被传输信息的源点与终点。由于填充技术的使用以及填充字符在不需要传输数据的情况下就可以进行加密,这使得信息的频率和长度特性得以掩盖,从 而可以防止对通信业务进行分析。

      尽管链路加密在计算机网络环境中使用得相当普遍,但它并非没有问题。链路加密通常用在点对点的同步或 异步线路上,它要求先对在链路两端的加密设备进行同步,然后使用一种链模式对链路上传输的数据进行加密,这就给网络的性能和可管理性带来了副作用。在线路 /信号经常不通的海外或卫星网络中,链路上的加密设备需要频繁地进行同步,带来的后果是数据丢失或重传。另一方面,即使仅一小部分数据需要进行加密,也会 使得所有传输数据被加密。

    2、节点加密

      节点加密能给网络数据提供较高的安全性,在操作方式上与链路加密相类似:两者均在通信链路上为传输的信息提供安全性;都在中间节点先对信息进行解密,然后进行加密。因为要对所有传输的数据进行加密,所以加密过程对用户是透明的。

      然而,与链路加密不同的是节点加密不允许信息在网络节点以明文形式存在,它先把收到的信息进行解密,然后采用另一个不同的密钥进行加密,这二过程是在节点上的一个安全模块中进行。 

      节点加密要求报头和路由信息以明文形式传输,因此这种方法对于防止攻击者分析通信业务是脆弱的。

    3、端到端加密 

      端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在。采用端到端加密(又称脱线加密或包加密),信息在被传输到达终点前不进行解密,这样信息在整个传输过程中均受到保护,所以,即使有节点被损坏,也不会使信息泄露。

       端到端加密系统价格便宜,更容易设计、实现和维护。端到端加密还避免了其它加密系统所固有的同步问题,因为每个文件包均是独立被加密的,所以一个文件包 所发生的传输错误不会影响后续的文件包。此外,从用户对安全需求的直觉上讲,端到端加密更自然些:单个用户选用这种加密方法,不会影响网络上的其他用户。

      由于端到端加密系统通常不允许对信息的目的地址进行加密,因此,这种加密方法不能掩盖被传输信息的源点和终点,因此它对于防止攻击者分析通信业务是脆弱的。
    --------------------------------------------------------------------------------------------------
    关于王小云破解MD5

    首先要说的是为什么需要使用密码?因为我们通常的通信环境是不安全的。

    那什么是不安全的通信环境呢?不安全至少表现在两个方面:一是通信的内容可能被窃取;二是通信的内容可能被篡改。

    通常的密码使用就是为这解决这两方面的问题。

    常用的密码有很多种类,其中最常用的是这三种:
    1、对称密码
    2、非对称密码
    3、摘要

    对称密码的特点是:加密与解密用相同的密钥,甚至可能用相同的算法。比如从最简单的异或,到常用的DES、BLOWFISH、IDEA等。它们通常的用途是这样的:

    发送方将源文(M)用密钥(K)加密:E=ENC(M,K)
    然后将E通过不安全网络传给接收方,接收方用相同的密钥(K)解密:M=DEC(E,K)

    只要算法足够好,并且保管好密钥(K),就可以保证这种通信是安全的,因为别人即使知道了密文(E)和算法ENC/DEC,也无法知道明文(M)。

    对 于这种密码来说,如果有方法可以从密文(E)和算法ENC/DEC中导到密钥(K)或明文(M),则意味这种密码被破解。比如简单异或算法就可以用统计分 析法简单地破解掉。但即使是现在被认为不够安全的DES算法(已经有近三十年历史了),也需要有大量的明文/密文对(2的数十次方对),并需要大量的计算 时间才能求得其密钥(K)。

    非对称密码是因为这样的原因:因为在对称密码中,通信双方需要约定一个共同的密钥(K),如果这个约定过程也不安全,就可能出现密钥的泄露,而对于对称算法来说,密钥一旦泄露,之后的通信过程也就不攻自破了。

    通常的非对称密码就是所谓的公钥密码算法,比如现在最常用的RSA(由R. L. Rivest和A. Shamir等人基于大数的因数分解极为困难的原理而创建),或是最近更为时髦的“椭圆曲线”,因为我的数学水平太差,具体算法也说不清楚,只知道大致是这样的:

    顾名思义,它所用的算法特点在于加密与解密用的密钥是不一样的。做法大致如下:

    发送方自己生成一对密钥:私钥(KA)和公钥(KPA)
    接收方也生成一对密钥:(KB)和(KPB)
    其中(KPA)和(KPB)是公开的
    发送方用算法:E=ENC(ENC(M,KA),KPB)
    进行两次加密,接收方用算法:M=DEC(DEC(E,KB),KPA)
    进行两次解密,即可得到原文。
    而其中双方都不需要知道对方的私钥,这就避免了约定密钥导致的不安全。
    非对称密码的算法本身又决定了用私钥加密的内容必须用公钥才能解,反之亦然,并且算法还保证仅知道公钥和密文无法导出私钥,由此决定了通信的安全。

    当 然,如果有方法可以从公钥导出私钥来,则这种算法即告被破解。但至少目前RSA还是安全的,因为从现在的数学理论上可以证明RSA的算法是一类NPC (NP完备)类问题,只要密钥足够长(RSA要求至少是10的100次方以上,实际使用时更要大得多),以现在最先进的计算机来算,其时间成本也是不可能 达到的。

    摘要算法则与上面两种完全不同,前面两种密码是用于防止信息被窃取,而摘要算法的目标是用于证明原文的完整性,也就是说用于防止 信息被篡改。通常也被称为:HASH算法、杂凑算法、签名算法。它的特点是:从不定长的原文中产生一个固定长度(如MD5是128位)的结果,称为“签 名”(S),这个签名必须对原文非常敏感,即原文即使是有少量的变化,也会导致这个签名面目全非。比如传统的CRC或是现在要说的MD5、SHA等都是这 类算法。

    摘要算法的用途通常是这样的:

    比如用户密码验证:如Linux或一些论坛用的方法,用户设置密码时,服务端只记录这个密码的MD5,而不记录密码本身,以后验证用户身份时,只需要将用户输入的密码再次做一下MD5后,与记录的MD5作一个比较即可验证其密码的合法性。

    比 如发布文件的完整性验证:比如发布一个程序,为了防止别人在你的程序里插入病毒或木马,你可以在发布这个程序的同时,公开这个程序文件的MD5码,这样别 人只需要在任何地方下载这个程序后做一次MD5,然后跟公开的这个MD5作一个比较就知道这个程序是否被第三方修改过。

    一个安全的摘要算法在设计时必须满足两个要求:其一是寻找两个输入得到相同的输出值在计算上是不可行的,这就是我们通常所说的抗碰撞的;其二是找一个输出,能得到给定的输入在计算上是不可行的,即不可从结果推导出它的初始状态。

    反之,如果某种摘要算法不能同时满足上面两个条件,则它就是不安全的。其实主要还是前一个条件,因为从理论上很容易证明后面一个条件基本上都是可以满足的:

    摘要算法对任意长的原文产生定长的签名,按照香农的信息论,当原文的长度超过一定的程度的时候,签名中就无法记录原文中的所有信息,这意味着存在着信息的丢失,所以我说理论上不可能从签名中恢复原文。 

    为什么说理论上呢?就是说当这种摘要算法被完全攻破时,也就是说可以从签名恢复出任意原文,注意:是任意原文,因为所有的摘要算法的特点就是存在着一个无穷大的碰撞原文的集合。而真正的原文只是其中一份。对应这个无穷大的集合来说,这就是一个无穷小.
    展开全文
  • 网络加密与认证技术

    千次阅读 2015-11-02 16:27:46
    信息加密技术  数据加密过程就是通过加密系统把原始的数字数据(明文),按照加密算法变换成与明文完全不同的数字数据(密文)的过程。  数据加密算法有很多种,密码算法标准化是信息化社会发展的必然趋势,是世界各国...

    信息加密技术

           数据加密过程就是通过加密系统把原始的数字数据(明文),按照加密算法变换成与明文完全不同的数字数据(密文)的过程。

           数据加密算法有很多种,密码算法标准化是信息化社会发展的必然趋势,是世界各国保密通信领域的一个重要课题。按照发展进程来分,经历了古典密码、对称密钥密码和公开密钥密码阶段。古典密码算法有替代加密、置换加密;对称加密算法包括 DES 和 AES;非对称加密算法包括 RSA、背包密码、McEliece 密码、Rabin、椭圆曲线、EIGamal D_H等。目前在数据通信中使用最普遍的算法有 DES 算法、RSA 算法和 PGP 算法等

     RSA


           在 CA 系统中,公开密钥系统主要用于对秘密密钥(在 CA 系统中称控制字——Control-Word 用于对数据码流进行加扰)的加密过程。每个用户如果想要对数据进行加密和解密,都需要生成一对自己的密钥对(Key Pair)。密钥对中的公开密钥和非对称加密解密算法是公开的,但私有密钥则应该由密钥的主人妥善保管。对数据信息进行加密传输的实际过程是:

           发送方生成一个秘密密钥并对数据流用秘密密钥(控制字)进行加扰,然后用网络把加扰后的数据流传输到接收方。发送方生成一对密钥,用公开密钥对秘密密钥(控制字)进行加密,然后通过网络传输到接收方。

            接收方用自己的私有密钥(存放在接收机智能卡中)进行解密后得到秘密密钥(控制字),然后用秘密密钥(控制字)对数据流进行解扰,得到数据流的解密形式。

            因为只有接收方才拥有自己的私有密钥,所以其他人即使得到了经过加密的秘密密钥(控制字),也因为无法进行解扰而保证了秘密密钥(控制字)的安全性,从而也保证了传输数据流的安全性。实际上,在数据传输过程中实现了两个加密解密过程,即数据流本身的加解扰和秘密密钥(控制字)的加密解密,这分别通过秘密密钥(控制字)和公开密钥来实现。

    数字签名技术

    来源与定义

           要想了解数字签名,应从电子签名开始。要理解什么是电子签名,需要从传统手工签名或盖印章谈起。在传统商务活动中,为了保证交易的安全与真实,一份书面合同或公文要由当事人或其负责人签字、盖章,以便让交易双方识别是谁签的合同,保证签字或盖章的人认可合同的内容,在法律上才能承认这份合同是有效的。而在电子商务的虚拟世界中,合同或文件是以电子文件的形式表现和传递的。在电子文件上,传统的手写签名和盖章是无法进行的,这就必须依靠技术手段来替代。能够在电子文件中识别双方交易人的真实身份,保证交易的安全性和真实性以及不可抵赖性,起到与手写签名或者盖章同等作用的签名的电子技术手段,称为电子签名。从法律上讲,签名有两个功能,即标识签名人和表示签名人对文件内容的认可

           联合国贸发会的《电子签名示范法》中对电子签名做如下定义:“指在数据电文中以电子形式所含、所附或在逻辑上与数据电文有联系的数据,它可用于鉴别与数据电文相关的签名人和表明签名人认可数据电文所含信息”;

           在欧盟的《电子签名共同框架指令》中就规定:“以电子形式所附或在逻辑上与其他电子数据相关的数据,作为一种判别的方法”称电子签名。实现电子签名的技术手段有很多种,但目前比较成熟的,世界先进国家普遍使用的电子签名技术还是“数字签名”技术。

           所谓数字签名就是通过某种密码运算生成一系列符号及代码组成电子密码进行签名,来代替书写签名或印章,对于这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章的验证无法比拟的。数字签名是目前电子商务、电子政务中应用最普遍、技术最成熟、可操作性最强的一种电子签名方法。

           数字签名在 ISO 7498-2 标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据, 防止被人(例如接收者)进行伪造”

     美国电子签名标准(DSS,FIPS186-2)对数字签名做了如下解释:“利用一套规则和一个参数对数据计算所得的结果,用此结果能够确认签名者的身份和数据的完整性”。按上述定义 PKI(Public KeyInfrastructure)可以提供数据单元的密码变换,并能使接收者判断数据来源及对数据进行验证。

           目前,实现电子签名的技术手段有好多种,前提是在确认了签署者的确切身份即经过认证之后,电子签名承认人们可以用多种不同的方法签署一份电子记录。这些方法有:基于 PKI 的公钥密码技术的数字签名;用一个独一无二的以生物特征统计学为基础的识别标识,例如手书签名和图章的电子图像的模式识别;手印、声音印记或视网膜扫描的识别;一个让收件人能识别发件人身份的密码代号、密码或个人识别码 PIN;基于量子力学的计算机等。但比较成熟的、使用方便具有可操作性的、在世界先进国家和我国普遍使用的电子签名技术还是基于 PKI 的数字签名技术。所以,就现在来讲,电子签名就是数字签名。

     数字签名的技术实现方法

           对一个电子文件进行数字签名并在网上传输,其技术实现过程大致如下:首先要在网上进行身份认证,然后再进行签名,最后是对签名的验证。

    1. 认证

           PKI 提供的服务首先是认证, 即身份识别与鉴别, 就是确认实体即为自己所声明的实体。认证的前提是甲、乙双方都具有第三方 CA 所签发的证书,认证分单向认证和双向认证。

    1) 单向认证

           单向认证是甲、乙双方在网上通信时,甲只需要认证乙的身份。这时甲需要获取乙的证书,获取的方式有两种,一种是在通信时乙直接将证书传送给甲,另一种是甲向 CA 的目录服务器查询索取。甲获得乙的证书后,首先用 CA 的根证书公钥验证该证书的签名,验证通过说明该证书是第三方 CA 签发的有效证书。然后检查证书的有效期及检查该证书是否已被作废(LRC 检查)而进入黑名单。

     2) 双向认证

           双向认证是甲、乙双方在网上通信时,甲不但要认证乙的身份,乙也要认证甲的身份。其认证过程的每一方都与上述单向认证过程相同,即乙方也用同样的过程认证甲方的证书有效性,如图 4.1 所示。甲乙双方在网上查询对方证书的有效性及黑名单时,采用 LDAP协议(Light Directory Access Protocol),它是一种轻型目录访问协议。


    2. 数字签名与验证过程

           网上通信的双方,在互相认证身份之后,即可发送签名的数据电文。数字签名的全过程分两大部分,即签名与验证。数字签名与验证的过程和技术实现的原理如图 4.2 所示。参照图 4.2 数字签名过程分两部分:左侧为签名过程,右侧为验证过程。即发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密求得数字签名,然后将原文与数字签名一起发送给收方;收方验证签名,即用发方公钥解密数字签名,得出数字摘要;收方将原文采用同样哈希算法又得一新的数字摘要,将两个数字摘要进行比较,如果两者匹配,说明经数字签名的电子文件传输成功。


    3.数字签名的操作过程

           数字签名的操作过程如图 4.3 所示,需要有发方的签名证书的私钥及其验证公钥。

           数字签名操作具体过程如下:首先是生成被签名的电子文件(《电子签名法》中称数据电文),然后对电子文件用哈希算法做数字摘要,再对数字摘要用签名私钥做非对称加密,即做数字签名;之后是将以上的签名和电子文件原文以及签名证书的公钥加在一起进行封装,形成签名结果发送给收方,待收方验证。


    4.数字签名的验证过程

           收方收到发方的签名结果后进行签名验证,其具体操作过程如图 4.4 所示。收方收到数字签名的结果包括数字签名、电子原文和发方公钥,即待验证的数据。收方进行签名验证。验证过程是:收方首先用发方公钥解密数字签名,导出数字摘要,并对电子文件原文做同样哈希算法得一个新的数字摘要,将两个摘要的哈希值进行结果比较,结果相同签名得到验证,否则签名无效。《电子签名法》中要求对签名不能改动,对签署的内容和形式也不能改动。


    CA认证与数字证书

    1.CA

           CA (Certification Authority)是认证机构的国际通称,它是对数字证书的申请者发放、管理、取消数字证书的机构。CA 的作用是检查证书持有者身份的合法性,并签发证书(用数学方法在证书上签字),以防证书被伪造或篡改。CA 认证是顺应我国电子商务和电子政务的发展应运而生的。随着网上银行的普遍应用和在线支付手段的不断完善,网上交易已经变得越来越大众化,安全问题就显得日益重要。而网络间的身份认证成为根本。认证机构相当于一个权威可信的中间人,它的职责是核实交易各方的身份,负责电子证书的发放和管理。理想化的状态是,上网的每一个企业或者个人都要有一个自己的网络身份证作为唯一的识别。而这些网络身份证的发放、管理和认证就是一个复杂的过程,也就是所谓的 CA认证。

    2.SSL

           SSL(Secure Sockets Layer, 安全套接字层)是一种国际标准的加密及身份认证通信协议,一般大家用的浏览器就支持此协议。SSL 最初是由美国 Netscape 公司研究出来的,后来成为了因特网上安全通信与交易的标准。 SSL 协议使用通信双方的客户证书以及 CA 根证书,允许客户/服务器应用以一种不能被偷听的方式通信,在通信双方间建立起了一条安全的、可信任的通信通道。它具备以下基本特征:信息保密性、信息完整性、相互鉴定。

    3.数字凭证

           数字凭证又称为数字证书、数字标识(Digital Certificate,Digital ID),也被称作 CA 证书(简称证书),实际是一串很长的数学编码,包含有客户的基本信息及 CA 的签字,通常保存在计算机硬盘或 IC 卡中。数字证书一般是由 CA 认证中心签发的,证明证书主体(证书申请者获得 CA 认证中心签发的证书后即成为证书主体)与证书中所包含的公钥唯一对应关系。它提供了一种在因特网上验证身份的方式,是用来标识和证明网络通信双方身份的数字信息文件,与司机的驾照或日常生活中的身份证相似。在网上进行电子商务活动时,交易双方需要使用数字证书来表明自己的身份,并使用数字证书来进行有关的交易操作。通俗地讲,数字证书就是个人或单位在因特网的身份证。数字证书主要包括三方面的内容:证书所有者的信息、证书所有者的公开密钥和证书颁发机构的签名及证书有效期等内容。

     一个标准的 X.509 数字证书包含以下一些内容:

    (1) 证书的版本信息。

    (2) 证书的序列号,每个证书都有一个唯一的证书序列号

    (3) 证书所使用的签名算法

    (4) 证书的发行机构名称(命名规则一般采用X.500 格式)及其用私钥的签名。

    (5) 证书的有效期。

    (6) 证书使用者的名称及其公钥的信息。

    4.数字证书能解决的问题

           在使用数字证书的过程中应用公开密钥加密技术,建立起一套严密的身份认证系统,它能够保证:信息除发方和收方外不被其他人窃取;信息在传输过程中不被篡改;收方能够通过数字证书来确认发方的身份;发方对于自己发送的信息不能抵赖。

    以电子邮件为例,数字证书主要可以解决以下问题:

           (1) 保密性,使用收件人的数字证书对电子邮件加密,只有收件人才能阅读加密的邮件,这样保证在因特网上传递的电子邮件信息不会被他人窃取,即使发错件,收件人也由于无法解密而不能够看到邮件内容。

           (2) 完整性,利用发件人数字证书在传送前对电子邮件进行数字签名不仅可确定发件人身份,而且可以判断发送的信息在传递的过程中是否被篡改过。

           (3) 身份认证:在因特网上传递电子邮件的双方互相不能见面,所以必须有方法确定对方的身份。利用发件人数字证书在传送前对电子邮件进行数字签名即可确定发件人身份,而不是他人冒充的。

           (4) 不可否认性,发件人的数字证书只有发件人拥有,所以发件人利用其数字证书在传送前对电子邮件进行数字签名后,发件人就无法否认发送过此电子邮件。

    5.数字证书的工作原理

           数字证书采用 PKI——公开密钥基础架构技术,利用一对互相匹配的密钥进行加密和解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥),由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发方使用收方的公钥对数据加密,而收方则使用自己的私钥解密,通过数字的手段保证加解密过程是一个不可逆过程,即只有用私有密钥才能解密,这样保证信息安全无误地到达目的地。用户也可以采用自己的私钥对发送信息加以处理,形成数字签名。由于私钥为本人所独有,这样可以确定发送者的身份,防止发送者对发送信息抵赖。收方通过验证签名还可以判断信息是否被篡改过。在公开密钥基础架构技术中,最常用一种算法是 RSA 算法,其数学原理是将一个大数分解成两个质数的乘积,加密和解密用的是两个不同的密钥。即使已知明文、密文和加密密钥(公开密钥),想要推导出解密密钥(私密密钥)在计算上是不可能的。按现在的计算机技术水平,要破解目前采用的 1024位 RSA 密钥,需要上千年的计算时间。简单地讲,结合证书主体的私钥,证书在通信时用来出示给对方,证明自己的身份。证书本身是公开的,谁都可以拿到,但私钥(不是密码)只有持证人自己拥有,永远也不会在网络上传播。在网上银行系统中有三个证书:银行 CA 认证中心的根证书、银行网银中心的服务器证书和每个网上银行用户在浏览器端的客户证书。有了这三个证书,就可以在浏览器与银行网银服务器之间建立起 SSL 连接。这样,浏览器与银行网银服务器之间就有个你),同样,你也可以用与你通信的对方的证书验证他的身份(他确实是他所声称的那个他),而这一验证过程是由系统自动完成的。

    6.数字证书的颁发

           数字证书是由认证中心颁发的。认证中心是一家能向用户签发数字证书以确认用户身份的管理机构。为了防止数字凭证被伪造,认证中心的公共密钥必须是可靠的,认证中心必须公布其公共密钥或由更高级别的认证中心提供一个电子凭证来证明其公共密钥的有效性,后一种方法导致了多级别认证中心的出现。数字证书颁发过程如下:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。

     

     参考书籍:《计算机网络安全技术》  主编 王其良 高敬瑜

    展开全文
  • 网络支付加密思路

    千次阅读 2018-11-07 00:45:23
    在C/S模式中, 客户端想要支付就要通过网络向服务器端发送请求, 那么问题来了, 在通过网络传输过程中的数据是可以进行拦截和修改伪造的, 也就说黑客可以拦截通过某个路由的所有数据,比如你的支付申请, 任意修改后再...

    问题引出

    在C/S模式中, 客户端想要支付就要通过网络向服务器端发送请求,

    那么问题来了, 在通过网络传输过程中的数据是可以进行拦截和修改伪造的,

    也就说黑客可以拦截通过某个路由的所有数据,比如你的支付申请, 任意修改后再发送到服务端, 

    服务端收到的是你的支付申请, 你购买了1双鞋, 被黑客修改成了100000双鞋,

    显而易见支付, 支付端是要验证判断请求是否正确, 是否被修改,

    所以对于重要的网络请求需要加密 , 使得请求数据不容易被修改,

    即使被修改以后也能被发现 , 进而拒绝该请求

    思路

    我们最直接的想法就是

    客户端对请求数据 按某种算法加密, 发送到服务器端后对 加密算法逆向得到解密数据

    (这种加密算法称之为对称加密算法, 即可加密也可解密),

    • 比如对请求"123"做乘3加密得到加密后数据"369", 客户端得到"369"再用相应的解密算法除3解密得到有效数据"123",
    • 这样黑客截获到"369"不知道加密解密算法 进而不知道"369"的意义,不能改成自己想要的数据

    这种加密算法如aes(适合对小量数据加密,计算量相对大), des(适合对文件加密), 算法是公开的,参数是自己自定义的, 如*3算法里的3,也就是密钥

    但是这样存在这样的问题:

    1. 通过规律猜测推测出加密算法,这样加密也就失去了作用
    2. 虽然不能任意修改,但是我可以捣乱,把"369"改成"399"客户端解密后得到"133", 你购买了1双鞋, 被黑客修改后成了100000双鞋,同样会造成损失, 也是不安全的

    加密升级:

    也就是说单独一种加密容易被破解, 即使不破解随意修改后也会造成损失,

    那么我们可以对数据以一定的方式生成唯一验证串添加到数据后一起传送过来,服务器串接到数据后以同样方式计算验证串,

    如果计算结果与请求中的验证串不等说明数据被修改了, 也就是说除非获取我们的验证串生成的方法否则修改后就会被发现, 

    这样就保证了数据传输安全

    生成唯一验证串的加密算法常用的有MP5加密, 一种被广泛使用的密码散列函数, 可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致

    • 如上例的"123"加密后得到"369"在连接上验证串:(MD5是公开的加密算法)
    • "369"+MD5("369")

    单纯的用MP5进行加密生成验证串的方式虽然不能被算出来但是容易被猜到,这样一来验证串就失去了作用,

    所以我们在选择要生成验证串的字符时, 不要直接用 加密后的数据 生成,

    对其以一定规则对其添加一些特定字符后再生成验证串,

    • 如上例可以:
    • "369"+MD5("secrit369ssssss")

    这样的加密规则(secrit[ ]ssssss)要客户端与服务端约定好并妥善保管不能泄露,

    上面的加密算法有很多,我只是举个简单的例子说明问题, 说明一下保证传输安全的思路

    对于客户端的加密过程会不会泄露取决于客户端能不能被破解, 起码不能用网页的js直接加密(网页js是公开的,大家都能直接拿到明文代码), 所以应该安装网页的安全插件,不过这就是另一个问题了

    其中一些概念可能不准确, 感兴趣可以自行了解

     

    展开全文
  • 如何使用加密狗加密自己程序

    万次阅读 2019-06-10 16:09:34
    使用加密狗进行程序的加密保护是非常成熟的加密方案。目前市面上比较常见的加密锁:深思的精锐5,威步,safenet。国内比较老牌的加密锁公司是深思,深思的锁从精锐4,到现在的精锐5,都是比较不错的产品,加密安全性...
  • 首先说明一下对称加密和非对称加密的概念。 对称加密: 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 非对称加密: 非对称加密算法需要...
  • 无线网络加密方式对比

    千次阅读 2011-11-30 11:35:36
    加密技术     全称   加密算法   协议背景   划分   特点   WEP     Wired Equivalent Privacy...
  • 网络加密的三种方式及比较

    千次阅读 2014-06-11 15:53:20
    链路加密:又称在线加密,是对在两个网络节点间的某一条通信链路实施加密,是目前网络安全系统中主要采用的方式。 节点对节点加密:在链路加密的基础上,在中间节点装有加密解密保护装置,使节点对节点也加密。 端...
  • Android网络请求加密机制详解

    千次阅读 2018-07-02 10:11:03
    Android开发中,难免会遇到需要加解密一些数据内容存到本地文件、或者通过网络传输到其他服务器和设备的问题,但并不是使用了加密就绝对安全了,如果加密函数使用不正确,加密数据很容易受到逆向破解攻击。...
  • 网络安全几种加密方式

    千次阅读 2018-11-01 18:07:26
    下面介绍几种网络传播加密方式: 1.密钥散列 采用MD5或者SHA1等散列算法,对明文进行加密(这里的加密仅对人,不对机器,因为这些算法机器可以用对应算法算出来) 适用场景:普通文件下载 缺点:不具备安全性...
  • AES加密算法的详细介绍与实现

    万次阅读 多人点赞 2017-02-19 08:53:54
    AES简介高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 下面简单介绍下...
  • 计算机网络 - 加密算法

    千次阅读 2019-03-26 21:06:07
    在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。
  • 7天快速入门Zigbee:传感器网络加密设计 目录 1. 概述 2. 加密方式 2.1 预设置网络密钥加密 2.2 协调器传输网络密钥加密 1. 概述 Z-Stack Mesh 1.0.0支持128bit的AES对称加密算法,ZigBee协议栈为了避开...
  • 无线网络加密方式对比 .

    万次阅读 2012-09-26 18:48:34
    加密技术     全称   加密算法   协议背景   划分   特点   WEP     Wired Equivalent Privacy...
  • 网络数据加密技术

    千次阅读 2006-11-27 17:18:00
    网络数据加密的三种技术在常规密码中,收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。比较著名的常规密码算法有:美国的des及其各种变形,比如triple des、gdes、new des和des的前身lucifer;...
  • 网络通信常用加密算法研究

    千次阅读 2015-12-24 10:46:10
    什么是对称加密和非对称加密 什么是对称加密: 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用...
  • 网络安全与加密技术

    千次阅读 2018-01-25 11:18:41
    二 、常见的加密算法  1. base64  Base64编码,是我们程序开发中经常使用到的编码方法。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法!也是MIME...
  • 网络加密如何协商密钥

    千次阅读 2012-12-05 18:36:00
    方法应该有很多种: ... 1) 服务动态生成一对公钥A和密钥B(非对称加密),然后把公钥A发送客户端,客户端自己动态生成一个对称密钥C,然后通过公钥A  加密后发送服务器,服务器通过密钥
  • 网络通信中的加密解密

    千次阅读 2018-07-02 17:27:43
    要理解加密网络通信中的应用,首先,要理解两个概念: 1. 对称加密加密和解密使用==同一个==密钥,比如密钥key,消息发送方使用key来加密内容,消息获取方使用key来解密内容。 2. 非对称加密加密和解密使用=...
  • 软件制作加密狗

    千次阅读 2019-09-20 05:17:52
    使用加密狗进行程序的加密保护是非常成熟的加密方案。目前市面上比较常见的加密锁:深思的精锐5,威步,safenet。国内比较老牌的加密锁公司是深思,深思的锁从精锐4,到现在的精锐5,都是比较不错的产品,加密安全性...
  • Android网络数据加密传输

    千次阅读 2015-03-06 17:12:18
    在移动应用开发中, 对于数据安全传输要求非常高, 尤其是涉及到用户财产安全的时候,都会对数据进行层层加密来确保数据的安全性 完整性;`在这里演示:我将演示银行在移动应用上的数据加密;传输的数据格式: json (别...
  • 第一章 常见网络攻击 1.1、XSS攻击 1.1.1 XSS简介 XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),为不跟层叠样式表 (Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS ...
  • 理解网络分层与数据加密

    千次阅读 2017-07-22 20:29:34
    网络分层网络的基础分层是OSI的七层架构: OSI的全称是Open System Interconnection(开放系统互联模型),是由国际标准化组织ISO设计,解决不同体系结构网络互相连接的问题。 实际应用中,五层架构是最常见的,也是最...
  • 网络通信安全与加密  在网络数据传输时,传输双方的数据可能会被第三方非法监听获取。因此,在真实网络环境中,通常会使用一些加密技术对网络数据进行保护。加密技术一般使用SSL加密和TLS加密。这两种加密是基于...
  • 网络传输的加密与解密

    万次阅读 2015-12-11 08:46:14
    --网络传输的加密与解密-- 转自:http://www.bubuko.com/infodetail-291200.html  由于互联网早期并没有考虑到数据报文安全的问题,早期的理念都是基于进行通信的。现在随着网络兴起,互联网上慢慢有很多...
  • C#实现网络传输数据加密

    千次阅读 2017-05-16 17:51:36
    一次加密一个数据组,加解密所使用的是同一密钥,故其通常也称为对称加密。分组长n各种不同的对称加密算法取值不同(DES和TripleDES为64位,AES默认为128位,也可以为192位和256位),在对明文消息进行分组时如果...
  • Android 连接加密网络

    千次阅读 2011-08-18 11:56:00
    if (wifiManager.startScan()) //扫描可用的无线网络 { List<ScanResult> scanResultList = wifiManager.getScanResults(); for (int i = 0; i (); i++) { ScanResult scanRet = scanResultList.get(i); if ...
  • 网络游戏数据加密技术

    千次阅读 2013-10-17 11:57:53
    用某种方法伪装消息以隐藏它的内容的过程称为加密(encryption),被加密的消息成为密文(ciphertext),而把密文转变为明文的过程称为解密(decryption)。 信息加密解密过程   算法和密钥 密码算法是用于加密和...
  • 私钥只存在本地,不需要进行网络传输,解决了对称加密传输密钥的安全性的问题。 优点:相对于非对称加密更安全 缺点:加密和解密效率低 3 非对称加密+对称加密 先使用非对称加密,将对称加密的密钥安传传输

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 411,995
精华内容 164,798
关键字:

如何给自己的网络加密