
当某个人向另一个人发送信息时,发出信息的人称为发送者,而收到信息的人称为接收者,被发送的信息有时也统称为消息( message )。
窃听者 Eve 并不一定是人类,有可能是安装在通信设备上的某种窃听器,也可能是安装在邮件软件和邮件服务器上的某些程序。
对称密码( symmetric cryptography )是指在加密和解密时使用同一密钥的方式
。
公钥密码( public-key cryptography )则是指在加密和解密时使用不同密钥的方式。因此,公钥密码又称为非对称密码( asymmetric cryptography )。
伪随机数生成器( Pseudo Random Number Generator, PRNG )是一种能够模拟产生随机数列的算法。
在 Web 中进行 SSL/TLS 通信时,会生成一个仅用于当前通信的临时密钥( 会话密钥 ),这个密钥就是基于伪随机数生成器生成的。如果生成随机数的算法不好,
窃听者就能够推测出密钥,从而带来通信机密性下降的风险。
• 对称密码
• 公钥密码
• 单向散列函数
• 消息认证码
• 数字签名
• 伪随机数生成器

还有另外一种技术,它不是让消息内容变得无法解读,而是能够隐藏消息
本身,这种技术称为隐写术( steganography )。
密码隐藏的是内容,隐写术隐藏的是消息本身。通过将密码与隐写术相结合,就可以同时产生两者所各自具备的效果。
举例:我很喜欢你
我们先准备一段话,
很容易看懂的就可以,
喜闻乐见的当然更好。
欢迎你尝试将另一句话嵌在这段话中,
你会发现这其实就是一种隐写术。
• 不要使用保密的密码算法:一旦密码算法的详细信息被暴露,依靠对密码算法本身进行保密来确保机密性的密码系统也就土崩瓦解了。反之,那些公开的算法从一开始就没有设想过要保密,因此算法的暴露丝毫不会削弱它们的强度
• 使用低强度的密码比不进行任何加密更危险:现在世界上公开的被认为强度较高的密码算法,几乎都是经过密码破译者长期尝试破解未果而存活下来的。因此,如果认为 “公司自己开发的密码系统比那些公开的密码系统更强”,那只能说是过于高估自己公司的能力了。
• 任何密码总有一天都会被破解
• 密码只是信息安全的一部分

在这个场景中,密钥 3 必须由发送者和接收者事先约定好。
package mainconst key = 3func Crypto(src string)string{src_ := []rune(src)for index,val:=range src_{src_[index]=val+3}return string(src_)
}func main() {println(Crypto("你好世界"))// 佣妀丙畏
}
func DeCrypto(src string)string{src_ := []rune(src)for index,val:=range src_{src_[index]=val-key}return string(src_)
}
func DeCrypto(src string,key rune)string{src_ := []rune(src)for index,val:=range src_{src_[index]=val-key}return string(src_)
}func Fuck(src string)string{for tmpKey:=0;tmpKey<=26;tmpKey++{fmt.Println(DeCrypto(src,int32(tmpKey)))}return ""
}
佣妀丙畏
佢奿丘畎
佡奾丗畍你好世界佟奼丕畋
佞奻且畊
佝奺专畉
作她丒畈
佛奸丑畇
佚奷丐畆
余奶丏畅
佘奵与畄
佗奴不畃
佖女丌畂
何奲下畁
佔奱上畀
体奰三甿
佒奯丈甾
佑奮万甽
佐奭丆甼
住奬丅画
低奫丄町
位奪七甹
佌奩丂甸
佋奨丁男
佊奧一甶
佉奦䷿电
凯撒密码太脆弱,无法保护重要信息。

MEYLGVIWAMEYOPINYZGWYEGMZRUUYPZAIXILGVSIZZMPGKKDWOMEPGROEIWGPCEIPAMDKKEYCIUYMGIF
RWCEGLOPINYZHRZMPDNYWDWOGWITDWYSEDCEEIAFYYWMPIDWYAGTYPIKGLMXFPIWCEHRZMMEYMEDWOMG
QRYWCEUXMEDPZMQRGMEEYAPISDWOFICJILYSNICYZEYMGGJIPRWIWAIHRUNIWAHRZMUDZZYAMEYFRWCE
MRPWDWOPGRWAIOIDWSDMEIGWYMSGMEPYYEYHRUNYARNFRMSDMEWGOPYIMYPZRCCYZZIOIDWIWAIOIDWE
YMPDYAILMYPMEYMYUNMDWOUGPZYKFRMIMKIZMEIAMGODTYDMRNIWASIKJYAISIXSDMEEDZWGZYDWMEYI
DPZIXDWODIU2RPYMEYXIPYZGRPDMDZYIZXMGAYZNDZYSEIMXGRCIWWGMOYM
首先,统计一下这段密文中每个字母出现的频率
线索:一般的英语文章中出现频率最高的字母是 e, 这一点基本上是不会错的,将Y替换为e
MEeLGVIWAMEeOPINeZGWeEGMZRUUePZAIXILGVSIZZMPGKKDWOMEPGROEIWGPCEIPAMDKKEeCIUeMGIF
RWCEGLOPINeZHRZMPDNeWDWOGWITDWeSEDCEEIAFeeWMPIDWeAGTePIKGLMXFPIWCEHRZMMEeMEDWOMG
QReWCEUXMEDPZMQRGMEEeAPISDWOFICJILeSNICeZEeMGGJIPRWIWAIHHUNIWAHRZMUDZZeAMEeFRWCE
MRPWDWOPGRWAIOIDWSDMEIGWeMSGMEPeeEeHRUNeARNFRMSDMEWGOPelMePZRCCeZZIOIDWIWAIOIDWE
eMPDeAILMePMEeMeUNMDWOUGPZeKFRMIMKIZMEIAMGODTeDMRNIWASIKJeAISIXSDMEEDZWGZeDWMEel
DPZIXDWODIUZRPeMEeXIPeZGRPDMDZelZXMGAeZNDZeSEIMXGRCIWWGMOeM
线索:英语中出现最多的单同是 the,假设 M== t,E == h
动员自己所有的英语词汇,在上面的文字中继续寻找可能的组合。发现中间有
一个词 thPee 比较可疑,假设P== r ?
…
• 除了高频字母以外,低频字母也能够成为线索
• 搞清开头和结尾能够成为线索,搞清单词之间的分隔也能够成为线索
• 密文越长越容易破译
• 同一个字母连续出现能够成为线索( 这是因为在简单替换密码中,某个字母在替换表中
所对应的另一个字母是固定的)

3. 每当按下 Enigma 上的一个键,就会点亮一个灯泡。操作 Enigma 的人可以在按键的同时读出灯泡所对应的字母,然后将这个字母写在纸上。这个操作在发送者一侧是加密,在接收者一侧则是解密。只要将键和灯泡的读法互换一下,在 Enigma 上就可以用完全相同的方法来完成加密和解密两种操作了。
密码算法是需要重复使用的,但在重复使用同一种算法的过程中,该算法被破译的可
能性也在逐渐增大。因此,就在密码算法中准备了一些可变部分,并在每次通信时都对这部分内容进行改变,而这一可变部分就是密钥。
上一篇:妈妈感慨孩子获奖句子
下一篇:晳和皙的意思有什么区别