前段时间写加密RSA算法,期间有个密钥长度问题。密钥长度决定可加密的字段的长度,涉及到字节字符和位之间的转换。当时就有点迷糊,表情就是这样的。
然后我决定总结一下,结果如下:
bit(位),也就是比特位,简称b,计算机数据的最小单位,数据存储的最小单位。每个二进制数字0或者1就是1个位;
Byte(字节),简称B。
B与b不同,注意区分,KB是千字节,Kb是千比特位。
1B=8b
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
字符(汉字和汉字标点符号都算字符)
ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值-128,最大值127。如一个ASCII码就是一个字节。
UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节
Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节
然后说一下rsa密钥长度对应的加密字段的长度。
计算公式是:密钥长度位数转化成字节数减11(具体为啥减11不大清楚)
1024位密钥可加密长度为117字节
2048位密钥可加密长度为245字节
目前查到的只有这些,有错误的欢迎大家留言改正!!!