C#实现DES加密时无法取到完整的64bit明文块

C#实现DES加密时无法取到完整的64bit明文块,第1张

虽然这样的代码很垃圾,但毕竟你拿到了64bit的明文块了!你中间的方框中不正是64bit块组成的吗?这有什么疑问吗?

说到块,必须先说一下这些加密的方式就是块加密,把密文进行分组(块),然后依次进行加密,每块输出的长度也是固定的,最后把这些输出块依次排好也就是明文了。

不过,这里边有几个问题要考虑一下:

块的大小是固定的吗?

是预知的,并非固定。比如DES加密块就是64bit,而AES则是128~256之间变化,当然TDES则是128~192之间变化,同一种方式在执行时可以设置好块大小了然后执行。算法上块大小是被选择的,不固定,但运行时必须是设置为固定的值。DES只支持64bit。

密文若不是块的整数倍,也就是分组时最后一组不够块大小怎么办?

答案是使用填充(部分算法可以不填充),ModePadding属性可以控制填充方式。

对称加密中密钥指的是什么?

对称加密中我们学说的密钥指的是密钥串和向量串两部分,也就是Key和IV,Key被称为密钥串,这个概念其实与密钥是有差异的,但由于翻译上的习惯等多种原因,key也被称为密钥,但是对于对称加密中所指的密钥来说,指定的是Key和IV两部分,而不是专指的Key。虽然如此,称Key为对称加密中的密钥也不能算错,这与IV的功能有一定的关系。

对称加密中的IV的作用是什么?

IV我们称之为初始向量或向量,引用这个值的作用类似于MD5中的加盐(但不完全一样,这个留到下个问题中说),在加密过程中会存在同一内容相似密文块多的情况,这样情况下,不同的加密方式(C#默认电子本CBC加密)会有异同,若使用相同的块加密会导致加密结果相似,从而通过统计方式进行反解,所以有些加密方式是通过向量给以变化,然后上一块的结果会变成下一块的IV使用(CBC加密,这样相同块由于输入的IV不同,明文也不会相同,但这种情况下会需要IV,体现了初始向量概念中初始的概念),而有些由是每个块使用相同的IV(初始IV),更有甚者根本没有使用IV。这些具体的要求要看具体的加密方式(模式)。但由于DES对象会检查,所以在C#中无论是否使用都检查IV的值。DESCryptoServiceProvider只是CSP容器实现DES而已。

使用完全一样的Key和IV,相同的加密算法与填充模式,对相同的密文加密,结果是一样的吗?

不一样!加密算法了为对抗反向工程,使用同一类对象加密相同的内容,结果也不尽相同(IV只是保密加密过程中块重叠问题,而这个是为了保证不同的加密过程结果不同,所以这个更象是MD5的不同加盐方式)。虽然加密后的结果是不同的,但解密都会是正确的结果。

对称加密和解密使用的是相同的算法吗?

这个很多人有误解,算法概念本身被含混了。严格来说,算法是相同的!密码学中的算法包含加密算法和解密算法(广义上还是签名算法和验签算法也是算法)!所以可以说加解密算法是一个,比如DES算法,AES算法等;狭义上的算法往往指的是加密/解密的具体实施算法,比如DES中的CBC等,其实更多的时候为了区分我们称之为加/解密模式或块算法或块模式。而更多的程序员却把实现(类库)中的函数(成员方法)称为算法——比如EnCrypto和DesCrypto之类的,这种其实是算是狭义中的加解密算法,更多的时候我们还是称之为方法而不是算法,假定出现重载时,你难道还称其为有多个“算法”吗?所以算法到底是加密方法是否相同,并不一定——有些精巧点的算法可能会相同——对称算法只是说使用的是相同的密钥,加密和解密时间相差不多,并不是说一定是方法相同!不少人以为对称算法中使用了相同的密钥,所使用的方法必须是同一个——没这回事!比如我封装一个:Crypto(byte[] orgData, byte[] keyIv, bool enCrypto); 最后一个使用布称或枚举让你选择是加密还是解密,这不就算是所谓的一个方法了吗?所以说实现(类中的方法)与加密中理论完全是两码事,很多人喜欢往一块混!

加密学中的位指的是bit吗?

确实是!比如64bit,其实就是8Bytes(Byte[8])而已。很多人在问,为什么加密出来却是16byte比如上文中的16个十六进制字符?其实是完全扯蛋——byte[8]如果用16进制表示,每4个bit用0~F表示,正好是16个,很多人喜欢把十六进制与字符串乱整一通(基本知识的问题),把十六进制转成字符,然后再大言不惭地说,就是16个字符嘛——确实是,问题在于十六进制转成字符后,把每个4bit给转成了8bit表示出来了!所以自己都不知道多少bit了!十六进制的"FF"其实只是一个字节(1111 1111),转成字符串“FF”就是"0100 0110 0100 0110"了(0100 0110是字符F的编码)!

其实加/解密涉及的内容并不多,比如上文的几个问题就基本上全是对称加密的一些重点了,然后要有处理字节的能力就可以了!别动不动转成字符串看看,那对你没有什么好处!很多应用程序员都喜欢把字节处理成字符串,然后转来转去浪费计算机性能!举个例子来说,把一个文本文件加密,加密后的结果就使用二进制方式直接存储就可以了,解密时直接读二进制文件。为什么非要转成十六进制字符呢?我知道打开后是乱码——就算是你保存成不乱码的十六进制,除了文件大小增加一倍外,你还自己真能看懂?可能其他人会跟题主一样说,我不会犯这样的毛病——那么Key和IV为什么会是EncodingGetBytes()本身的设计是key和IV的容量都是非常的大的——现在就剩下一些可显示字符了!加上标点才85个而已(如果只是数字和字母只有36个了),按Key加密方法来算只有85^8了,事实设计了64bit,也就是2^64方个!为什么这个参数不是byte[8]就算你想使用户接口,也应该是用户接口的成员方法处理。

所以,Key/IV输入的一定要是Byte[],就算是图形界面与方法不能直接交互,那么你可以设计一个密码的输入框,然后把用户输入的内容MD5,前64bit做Key后64bit做IV不是更好么?

盐的美容功能是怎么被人们发现的?也许我们应当让记忆回溯到古老的欧洲。在安徒生的童话里,那条感情纯美的美人鱼,正是饱受着海水的滋养,才出落得动人无比。在很早以前,欧洲的水手们,由于长期暴露在阳光下,皮肤容易破裂及老化,但由于海盐的清洁和治疗作用使得他们的皮肤仍能保持最佳状态,而这也是海水的功劳,正是海盐的清洁和治疗作用,使得水手们的皮肤遭到破坏之后又被及时恢复。受此启发,荷兰人将取自深海的盐精炼成浴盐用于皮肤的保养,也许,这正是美人鱼所要传递的遥远的启示吧!现在,美容中的美丽浴盐已演绎出各种沐浴文化,咸咸的香香的、色彩缤纷的浴盐旋风已经刮遍了全世界。 作用机理美国研究人员在1987年的试验表明:盐可以使人体皮肤和细菌间的静力吸引发生短路,其钠离子和氯离子所带的微电荷能产生干扰,使细菌难以粘附生存于人的皮肤表面,使细菌脱水,并破坏细菌从皮肤上获取养分的能力,从而杀死细菌。浴盐的作用机理就是利用盐的渗透性,深入皮肤,促使血液循环,促进新陈代谢,带出毛孔中多余的水分及微细物质、脂肪等,起到减肥瘦身的作用;利用盐的磨砂性,清除皮肤表面的角质,顺利脱落干死皮肤,延缓皮肤衰老,起到健美皮肤的作用。 自古以来,“盐”就被拿来当作“洁净”的代表用品。不论是被用作祭神供品的一种,或是相扑开始前被拿来洒在场地的四角,以及葬礼返回后以盐洒在肩上的习惯都可以从中明了“盐”具有清洁所有事物的功效。 在科学证明之前,我们不妨来看一看一些大家曾经历过的事例。譬如使用盐来长久保存食物,相信每个人都知道酱菜、梅干以及鱼干肉类的保存都需大量使用日晒海盐才可以。此外,还有盐被用来当作药品的例子。从前喉咙痛或溃烂时都会饮用食盐水。而我们建议呼吸系统有疾病的人到海滨疗养,此乃因为病人可以在此长期呼吸到混在海水中蒸发的细小食盐粒子。诸如此类都是大家较为熟悉的方法。 医生会注射生理盐水以挽救大量出血濒死的患者。对于咯血的人也可给予饮用盐水,不幸误饮毒药者,则可令其喝下食盐水来催吐洗胃。食盐水还可以用来清洗鼻子,治疗轻微的鼻蓄脓。凡此种种,日晒海盐对身体的帮助可谓不胜枚举。为什么日晒海盐对于人体的许多部分以及症状能产生如此的功效呢? 一言以蔽之,人体内部与海水有着相同的成分。因此那些取自海水古法制作的盐对于身体便有很大的益处。相反的,精制盐就无法产生任何功效。 像穿衣服讲究自然、随意一样,日用品则讲究成份的天然含量。浴盐则顺理成章地成为肌肤保养的佳品,因为它天然的成份、清淡的香气、迷人的色彩而成为护肤新宠。在许多国家,人们已经习惯用深海浴盐洗脸、浴足,它能促进新陈代谢、深层清洁肌肤、消炎、杀菌、快速治愈小伤口、祛除多余油脂和角质层、修复凹凸不平的表皮、收敛粗大的毛孔等,长期使用能让肌肤柔滑细腻。 浴盐是在经历了香皂、沐浴露之后,洗浴家族的一位新成员。它由草药、天然海盐、矿物质和植物精油等成分组成,富含人体所需的铁、钙、硒、镁等多种微量元素,长期使用可以消除肌肤上的黑色素,让它逐渐恢复d性,对祛除面部暗疮、粉刺、色斑也有积极的功效。 浴盐不是普通的盐 非典后,香港风靡起“浴盐护肤”。因为浴盐有杀菌消炎的作用,所以许多美容杂志都极力推崇这种护肤方法。浴盐不是普通的盐,它是由天然海盐与各种添加成分加工精炼而成的,是含有矿物质、营养素及某些提取物(如海藻)的结晶。 据说最早发现“盐”有护肤功效的是欧洲水手。他们虽长期在阳光下曝晒,但海盐的清洁和消炎作用总能使他们的皮肤及时恢复健康状态。荷兰人受此启发,把取自深海的盐精炼成浴盐,让人们能用它来洗脸、浴足。事实证明,浴盐中的微量盐分能促进皮肤新陈代谢、给皮肤杀菌、消炎、去油、收缩毛孔、使肌肤柔滑细腻。 香港护肤专家还进一步提出,用浴盐泡澡就像做了一次全身按摩。因为人体就像一个小型发电体,而盐是良好的电解质,将身体泡在含有微量盐分的水中,形成的小电场能对皮肤里的末梢神经产生刺激,从而促进血液循环及新陈代谢。在这个“电场”的作用下,角质层和皮肤上的污垢更易脱落,益于肌肤的清洁和自我更新。 用盐疗法保健康 日晒海盐妙用 现在,世界上充斥着各种健康法,这种现象正表示着现代人对于自己的健康管理很关心,认真地考虑应怎样维持健康,以过着健全而快乐的生活。但是很多健康法,由于开销大,会出人意料之外的不能长久,现要推荐给大家的便是利用盐来做畦康疗法。 日晒海

如果对你有帮助,劳驾点下五星采纳,祝您游戏愉快!记得采纳哦~

DES-1226G 有支援Port Based VLAN其实很好划分的,如你可以将Default VLAN的member 设定成1~12 再加25,26,另外再建一个VLAN2 member 13~24另外再加25,26, 接著您的25,26就可以接外网了,25,26 potr可以跟Default VLAN还有VLAN2通,而且Default VLAN中的member 1~12又不会跟VLAN2的MEMBER 13~24的互通

如果您的是比较新的DES-1226G RevB,那只支援IEEE 8021Q VLAN的规划,你可以设定VLAN10 member (Untag 1~12 Tag 25,26), VLAN20 (Untag 13~24 Tag 25,26) Port1~12 PVID=10, Port13~2 PVID=20如此设定即可,但要注意的是,你的Uplink Port是会传送Tag的,所以你另一边的连结端,如Router或Server, 也要能够支援IEEE8021Q VLAN Function才行哦!

以上就是关于C#实现DES加密时无法取到完整的64bit明文块全部的内容,包括:C#实现DES加密时无法取到完整的64bit明文块、恢复activedestop在界面上如何消除、D-Link DES-1226G在网上看说可以做VLAN配置 有谁会做啊 界面是E文的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9872177.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存