DES加密GUID+文件名称,关于DES加密后文件长度是否超过WINDOWS文件命名规定长度255个字节。

首先:Windows文件名长度:

最长255字节.

我在ntfs文件系统的盘上建的文件,文件名可以包含255个汉字,这是为什么?文件名长度不是有255字节的限制吗?一个汉字不是等于2个字节吗?

winNT是使用宽字符(unicode)的,一个英文字母和一个汉字一样都是占用2字节.

windows为什么会限制文件名长度

文件系统中,文件名至少在两个地方存在,一是文件内部的文件头信息,二是磁盘内的文件分配表.
就像你填表格一样,大小是有限制的.
DOS时代文件名只支持8位,32位系统后文件名长度应该足够用了.

——————————————————

 

GUID

 

未完待续

 

续来了

我的分析:文件名为什么112位长度。

加密的数据不是块长度的整倍数的话,就需要做填充。填充可以填全零,可以填全一,也可以填随机。未满8字节(64位) 则填充为64位(一组)。若 正好满8字节(64位) 则填充为16字节(128位)。所以如果明文数据超过8个字节(64位),则除最后一组是编码为8个字节(64位),其他前面的都是满8个字节(64位)的块,编码为16字节(128位)。

4位=16进制
GUID 共128位(32长度 16进制)              128 位/4=32长度
身份证号码18长度(作为字符串时C# char 16位)  18长度×4=72位
次数:2长度 ((作为字符串时C# char 16位))   2长度×4=78位


位:128+72+8=208位  原文总位数
DES。分组64位一组加密。每64位原文加密成64位密文。但满64位加密成128位密文(后64位根据加密规则填充0或1),最后未满64位的填充为64位满。最后密文是64位(8字节)的整数倍。

所以 208/64=3  208%64=16  有3组密文被填充为128位(16字节),有1组 被填充为64位(8字节)
128×3+64=448位密文。

448位 按照 16进制表示   448位/4 =112长度
在windows下面,单个文件名的长度限制是255,完整的路径长度(如E:\test\aaa.txt这样限制是260) 

原理:

DES文件名长度分析。
3DES的算法描述
  DES作为美国国家标准研究所(American National Standard Institute,ANSI)的数 据加密算法(Data Encryption Algorithm,DEA)和ISO的DEA 1,成为一个世界范围内的 标准已经二十多年。尽管他带有过去时代的特征,但他很好地经受住了多年的密码分析 ,除了可能的最强有力的对手外,对其他的攻击具有较好的安全性。 
3.1DES的描述
  DES是一种分组加密算法,他以64位为分组对数据加密。64位一组的明文从算法的一端 输入,64位的密文从另一端输出。DES是一个对称算法:加密和解密用的是同一个算法(除 密钥编排不同以外)。 
  密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽 略)。密钥可以是任意的56位数,且可以在任意的时候改变。 
  DES算法的入口参数有3个:Key,Data,Mode。其中Key为8个字节共64位,是DES算法 的工作密钥;Data也为8个字节64位,是要被加密或解密的数据:Mode为DES的工作方式,有 两种:加密或解密。 
  DES算法的工作过程:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码 形式(64位)作为DES的输出结果;若Mode为解密,则用Key对密码形式的数据Data解密,还 原为Data的明码形式(64位)作为DES的输出结果。 
  在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密 ,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的 地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核 心数据(如PIN,MAC等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源 端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网 络的流行作法。 
  简单地说,算法只不过是加密的一种基本技术,DES基本组建分组是这些技术的一种组合 ,他基于密钥作用于明文,这是众所周知的轮(round)。DES有16轮,这意味着要在明文分 组上16次实施相同的组合技术。



根据DES算法原理,密文长度应该为8的倍数,即小于等于8个字节的明文,加密后密文应为8字节.即DES 使用64位加密的, 不足64位的,会补上位, 然后加密

首先你要明白什么是块加密算法(block cipher)。

块加密就是把明文分割成一个个大小相等的块,通常是以 8 字节为倍数是 1 个单位。比如,DES 的块大小是 64 bits,也就是 8 字节。

因为每个块都是固定的长度,所以如果要加密的数据不是块长度的整倍数的话,就需要做填充。填充可以填全零,可以填全一,也可以填随机,有专门的方案,在此不做介绍。

如果做了填充,那么密文会比明文长几个字节,但恢复成明文时可以用一个标记把解密后的数据截断,留下数据,丢弃填充,这样数据的完整性得到了保证。

•	我記得DES是以8 bytes作為單位,如果資料不是8 bytes的倍數,就會用0補齊,所以最後出來的密文會是大於等於且最接近的那個8 bytes的倍數,譬如 Data = 8 bytes --> 密文為 8 bytes,Data = 14 bytes -->密文為16 bytes...etc。

密文為8位元的倍數, 你如果輸入的8位元內, 密文都是8位元, 如果是8位元的資料, 密文則為16位元


 

本人声明: 个人主页:沐海(http://www.cnblogs.com/mahaisong) 以上文章都是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言或加我QQ!欢迎交流!
原文地址:https://www.cnblogs.com/mahaisong/p/2178337.html