版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络和通信程序设计(C#)语言第五章 字符串与字符编码5.1 String类在C#中,字符串类型将一组字符视为一个整体进行处理。C#使用关键字string来定义字符串类型,对应着.NET类库的System.String类。常用字符串操作方法方法作用Compare比较两个指定的String对象CompareTo将此实例与指定的对象String进行比较,并返回二者相对值的指示Concat连接String的一个或多个实例,或Object的一个或多个实例的值的String表示形式Contains返回一个值,该值指示指定的 String 对象是否出现在此字符串中。Copy创建一个与指定的String具有
2、相同值的String的新实例CopyTo将指定数目的字符从此实例中的指定位置复制到Unicode字符数组中的指定位置Equals确定两个String对象是否具有相同的值Format将指定的String中的每个格式项替换为相应对象的值的文本等效项IndexOf报告String或一个或多个字符在此字符串中的第一个匹配项的索引IndexOfAny报告指定Unicode字符数组中的任意字符在此实例中第一个匹配项的索引Insert在此实例中的指定索引位置插入一个指定的String实例LastIndexOf报告指定的Unicode字符或String在此实例中的最后一个匹配项的索引位置op_Equality
3、确定两个指定的String对象是否具有同一值op_Inequality确定两个指定的String对象是否具有不同的值常用字符串操作方法PadLeft右对齐字符,在左边用空格或指定的Unicode字符填充以达定的总长度PadRight左对齐字符,在右边用空格或指定的Unicode字符填充以达到指定的总长度ReferenceEquals确定指定的Object实例是否是相同的实例。(从Object继承)Remove从此实例中删除指定个数的字符Replace将指定Unicode字符或String的所有匹配项替换为其他指定的Unicode字符或StringStartsWith确定String实例的开头是
4、否与指定的字符串匹配Substring从此实例检索子字符串ToCharArray将此实例中的字符复制到 Unicode 字符数组ToLower返回此String转换为小写形式的副本ToString将此实例的值转换为StringToUpper返回此String转换为大写形式的副本Trim从此实例的开始位置和末尾移除一组指定字符的所有匹配项TrimEnd从此实例的结尾移除数组中指定的一组字符的所有匹配项TrimStart从此实例的开头移除数组中指定的一组字符的所有匹配项5.2 StringBuilder类与String的区别与联系String对象串联操作总是用现有字符串和新数据创建新的对象Stri
5、ngBuilder对象维护一个缓冲区,以便容纳新数据的串联主要方法Remove方法Replace方法Insert方法Append方法AppendLine方法AppendFormat方法5.3 字符集与字符编码计算机的字符集主要字符集ASCII 字符集,单字节美国,1967年关于:GB2312 字符集,双字节中国,1981年BIG5 字符集,双字节中国台湾五公司,1984年GB18030 字符集,单/双/四字节中国,2000年Unicode字符集,0-0 x10FFFFUnicode 学术学会,1994年UTF-8,8位变长UTF-16,16位无符号UTF-32,32位无符号ASCII码表Enc
6、oding类.NET Framework 提供以下Encoding类的实现以支持当前 Unicode 编码和其他编码ASCIIEncoding 将 Unicode 字符编码为单个 7 位 ASCII 字符。UTF7Encoding 使用 UTF-7 编码对 Unicode 字符进行编码。UTF8Encoding 使用 UTF-8 编码对 Unicode 字符进行编码。UnicodeEncoding 使用 UTF-16 编码对 Unicode 字符进行编码。UTF32Encoding 使用 UTF-32 编码对 Unicode 字符进行编码。/zh-cn/library/system.text.
7、encoding(VS.80).aspx字符与字符编码的转换将文符串转换成字节数组Encoding.ASCII.GetBytes(String)将字节数组转换成字符串Encoding.ASCII.GetString(Byte)/散列值、密文直接转换将出现乱码5.4 字节(数组)可视化处理方法Base64编码是一种基于64个(26=64)可打印字符来表示二进制数据的表示方法。常用于处理文本数据的场合,表示、传输、存储二进制数据,如加解密及网络编码。可以将 3*8 bit 表示为 4*6 bit。关于:实现Convert.ToBase64String(Byte)Convert.FromBase64
8、String(String)字节的16进制显示:(散列值常用的表示法)tmpi.ToString(X2)/tmp为字节数组任务4:1.从身份证号码中提取信息输入身份证号从中提取出地区码、出生日期、性别等信息2.设计字符编码转换器实现字符与Base64字符的互转实现字符的16进制显示及其相互转换基于不同的字符编码,将字符转换成16进制显示并比较3.选择一张照片,将其显示为Base64文本 *第六章 密码术基础与网络编程6.1 密码术基础 网络信息安全信息存储安全和信息传输安全。信息传输安全是指如何保证信息在网络传输的过程中不被泄露与不被攻击。保证网络中信息安全的主要技术是数据的加密与解密。加密与
9、解密在密码学中,将源信息称为明文;对明文进行某种变换后生成的隐藏了其真实内容的信息称为密文;将明文变换为密文的过程称为加密;将密文经过逆变换恢复成明文的过程称为解密。计算机网络加密技术链路加密链路加密是目前常用的一种加密方法,通常用硬件在网络层以下的物理层和数据链路层中实现,它用于保护通信节点间的数据。 节点加密 节点加密是链路加密的改进,其目的是克服链路加密在节点处易遭非法存取的缺点。在协议传输层上进行加密,是对源点和目标节点间传输的数据进行加密保护。 端-端加密网络层以上的加密,通常称为端-端加密。端-端加密是面向网络高层主体进行的加密,即在协议表示层上对传输的数据进行加密,而不对下层协议
10、信息加密。协议信息以明文形式传输,用户数据在中间节点不需要加密。 数据加密模型消息源加密器解密器消息宿密钥源传输或存储安全信道数据加密表达式加密:C=En(Ke,P)P:信息明文K:密钥En:算法C:信息密文解密:P=Dn(Kd,C)传统加密技术替代密码(字符操作)定义:明文中的每一个字符被替换成密文中的另外一个字符简单替代密码 凯撒密码(循环移位密码):把明文中所有的字母都用它右边的第k 个字母替代,并认为Z后边又是A ROT13:用字母表里am的字符来代替nz,用nz的字符来代替 am字符Eg: “v ybir lbh!” ? 多表替代密码(明文:how are you,密码:your)P
11、=HOWAREYOU K=YOURYOURY Ek (P)=FCQRPSSFS 传统密码技术简单异或(按位操作)00=0 01=1 10=1 11=0 加密:1001 1100 = 0101解密:0101 1100 = 1001对称密码技术非对称密码技术密码个数1个2个算法速度较快较慢算法对称性对称,解密密钥可以从加密密钥中推算出来不对称,解密密钥不能从加密密钥中推算出来主要应用领域数据的加密和解密对数据进行数字签名、确认、鉴定、密钥管理和数字封装等对称加密技术加密和解密过程均采用同一密钥 DES与AES非对称加密技术加密和解密过程采用不同的密钥RSA与ECC现代加密技术对称加密技术DES(数
12、据加密算法,1976)64位分组加密AES(高级加密算法,2001)128位分组加密128/192/256位密钥初始变换64位的密文逆初始变换64位明文64位的密钥加密变换16轮子密钥生成DES原理:接收者将一对密码中的一个(公钥)公开,另一个秘密保存发送者使用接收者的公钥加密信息接收者使用私钥解密出原文数学模型:C=E(Kp, P)P=D(Ks, C)特点:加密密码(公钥)Kp是公开信息,而解密密钥(私钥) Ks是保密的。公钥和私钥相互关联,但不可能根据公钥计算出私钥。 非对称加密技术HTTPS:电子信封技术的具体应用一对矛盾对称加密:速度快,密钥管理困难非对称加密:速度慢,解决密钥管理问题
13、电子信封技术HTTPS(安全的HTTP通道,在HTTP下加入SSL层):客户端向服务器发送请求(包括版本、算法等)服务器向客户端发送响应以及证书(含公钥)客户端产生对称密钥,用服务器公钥加密后发送服务器用私钥解密,得到对称密钥双方确认该对称密钥后,进行保密通信(保密性)数据的完整性验证:报文鉴别技术 Hash函数也称消息摘要(MD:Message Digest),将可变长度的报文M作为单向散列函数的输入,然后得出一个固定长度的标志 H(M),称为Hash值(哈希值)表达式:MD=H(M)Hash算法MD算法(MD5,128位)SHA算法(SHA-1,160位)HMAC算法报文鉴别码 MAC (
14、Message Authentication Code)用一个密钥生成的一个小的数据块追加在报文的后面。表达式:MAC = F(K,M)数据的不可抵赖性:数字签名技术数字签名就是为了达到签名的效果,附加在数据单元上的一些数据。数字签名的要素:签名信息能被接收者读取发送者事后不能抵赖(信息内容及签名事实)接受者不能伪造签名数字签名的实现产生信息原文的摘要用私钥对摘要进行加密(签名)将原文和签名一起传输接收者用发送者的公钥解密签名得到摘要产生信息原文的摘要并与上述签名摘要比较数字签名技术示意图6.2 .NET密码术编程基础 提供包括安全的数据加密与解密、确保数据的完整性,以及处理数字签名和证书等加
15、密服务核心加密类分为三层,如右图6.2.1 哈希(散列)算法及编程哈希函数是现代密码系统的基础。哈希函数将任意长度的二进制字符串映射为固定长度的小二进制字符串(称为哈希值/散列值)。哈希值用作表示大量数据的固定大小的唯一值。哈希函数通常用于数字签名和保持数据完整性等。哈希函数的特点:在计算时不可能将两个不同的输入通过哈希算法获取相同的值。如果相应的数据匹配,则两个数据集的哈希应该匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。哈希算法的编程实现.NET 哈希算法类都继承自HashAlgorithm抽象类。类说明KeyedHashAlgorithm显示所有加密哈希算法实现均必须从中派生的
16、抽象类。MD5CryptoServiceProvider使用加密服务提供程序 (CSP) 提供的实现,计算输入数据的 MD5 哈希值。SHA1CryptoServiceProvider使用加密服务提供程序 (CSP) 提供的实现计算输入数据的 SHA1 哈希值。MD5表示MD5哈希算法的所有实现均从中继承的抽象类。RIPEMD160表示 MD160 哈希算法的所有实现均从中继承的抽象类。SHA1计算输入数据的SHA1哈希值。SHA256计算输入数据的SHA256哈希值。SHA384计算输入数据的SHA384哈希值。SHA512计算输入数据的SHA512哈希值。哈希(散列)编程实例/获取字符编码
17、byte aaa = Encoding.UTF8.GetBytes(str);/使用MD5CryptoServiceProvider类创建md5对象MD5CryptoServiceProvider md = new MD5CryptoServiceProvider();/也可以使用MD5类创建md5对象/MD5 md = MD5.Create();/计算md5值byte bbb = md.ComputeHash(aaa);/显示处理StringBuilder sb = new StringBuilder();foreach (byte tmp in bbb) sb.Append(tmp.ToS
18、tring(X2);return sb.ToString();6.2.2 对称加密算法及编程特点:算法公开、计算量小、加密速度快、加密效率高。主要算法:DES、3DES、RC5、AES等分组密码的工作模式电子密码本 (electronic codebook mode,ECB )密码分组链接 (cipher block chaining, CBC )密码反馈 (cipher feedback, CFB)输出反馈 (output feedback, OFB)计数器 (counter, CTR )算法工作模式中的初始向量 IVSymmetricAlgorithm类 (留意CBC,Key,IV)/zh
19、-cn/library/system.security.cryptography.symmetricalgorithm(v=VS.80).aspx对称加密的主要算法(一)DEA/DES数据加密算法(Data Encryption Algorithm,DEA),数据加密标准(Data Encryption Standard,DES)使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小3DES,Triple DES三重数据加密算法(Triple Data Encryption Algorithm,TDEA),用双长度(128位)密钥K=(KL|KR)将64位明文数据块(分组)进行
20、3次DES加密/解密。加密:Y = DES(KL)DES-1(KR)DES(KLX)解密:X = DES-1(KL)DES (KR) DES-1(KLY)对称加密的主要算法(二)AES加密算法高级加密标准(Advanced Encryption Standard),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。AES加密数据块分组长度必须为128位,密钥长度可以是128、192或256位加解密处理的参数密钥的长度与填充初始化向量的长度与填充:长度与数据块分组长度一致SymmetricAlgorithm 的主要成员属性描述BlockSize 获取或设置加密操作的块大小(以位为
21、单位)FeedbackSize 获取或设置加密操作的反馈大小(以位为单位)IV 获取或设置对称算法的初始化向量 (IV)Key 获取或设置对称算法的密钥KeySize 获取或设置对称算法所用密钥的大小(以位为单位)LegalBlockSizes 获取对称算法支持的块大小(以位为单位)LegalKeySizes 获取对称算法支持的密钥大小(以位为单位)Mode 获取或设置对称算法的运算模式Padding 获取或设置对称算法中使用的填充模式方法描述Clear 释放由 SymmetricAlgorithm 类使用的所有资源Create 创建用于执行对称算法的加密实例CreateDecryptor 用
22、指定的密钥和初始化向量创建一个对称解密器对象 CreateEncryptor 用指定的密钥和初始化向量创建一个对称加密器对象 GenerateIV 为对称加密算法生成一个随机的初始化向量(IV),并重写IV属性中所存储的值 GenerateKey 为对称加密算法生成一个随机密钥(Key),并重写Key属性的值 ValidKeySize 确定指定的密钥大小对当前算法是否有效 对称加密算法及编程.NET 在 SymmetricAlgorithm 类的基础上,给出了抽象算法实现类DES、RC2、TripleDES和Rijndael,并在此基础上给出了具体加密方案实现类。AES加密编程实现Byte bKey = Encoding.UTF8.GetBytes(Keystr.PadRight(32); Byte bIV = Encoding.UTF8.GetBytes(IVstr.PadRight(16); Byte Data = Encoding.UTF8.GetBytes(Datastr); /创建内存流MemoryStream ms = new MemoryStream();/创建AES对象,并内存流对象包装成加密器对象R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47971.1-2026电动汽车动力蓄电池安全评价指南第1部分:单体及模块
- 露天采煤机司机班组安全模拟考核试卷含答案
- 挤压模具工安全规程水平考核试卷含答案
- 2026年真菌感染健康知识分享
- 雷达装调工操作规程测试考核试卷含答案
- 复合超硬材料制造工岗前决策力考核试卷含答案
- 聚偏氯乙烯装置操作工诚信品质测试考核试卷含答案
- 墨汁制造工岗位水平竞赛考核试卷含答案
- 合成树脂生产工岗前设备考核试卷含答案
- 工具五金制作工岗位理论模拟考核试卷含答案
- 2026广西南宁市青秀区政务服务局招聘1人(劳务派遣)笔试参考题库及答案详解
- 医养结合机构老年人探视管理制度及流程
- 2026中国银行消防安全专项社会招聘备考题库含答案详解【培优】
- 农民工工资支付承诺书(5篇)
- DLT 5055-2024 水工混凝土掺用粉煤灰技术规范
- 固态聚合物锂离子电池项目可行性研究报告
- 2026年贵州省、市两级机关公开遴选公务员考试(公共科目)综合能力测试题及答案
- SolidWorks机械设计项目化教程 课件全套 模块1-5 SolidWorks软件初识 - 工程图设计
- 2026年医院抗菌药物临床应用管理试题
- 静脉输液工具的合理选择
- 2026年一级建造师(港口与航道工程)模拟考试题及答案
评论
0/150
提交评论