我试图在Matlab中实现DES
密码。
为了获得纯文本和密钥的位,我这样做:
binInput = hex2bin(sprintf('%x',input));
hex2bin
是教授给我们的功能
这给了我输入的十六进制,然后它的二进制为char
数组。
我注意到当input
有一个尾随空格时,它会被忽略,因此我的算法停止工作,因为该块不再是64位长(我得到一个1x15
字符向量而不是例如1x16
。
我怎样才能包含这个尾随空格?我在网上或help
sprintf
找不到任何内容。
提前致谢
答案 0 :(得分:0)
sprintf
确实尊重所有空白,无论它是尾随,领先还是中间。
sprintf('%x', 'hello')
% 68656c6c6f
sprintf('%x', 'hello ')
% 68656c6c6f20
如果您需要输入长度为64位的倍数,则可能需要使用空字节填充数据
str((end+1):(end+mod(numel(str), 8))) = '0';
如果有任何内容被截断,那么教授给你的hex2bin
函数可能会出现问题。