码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [密码学入门]凯撒密码(Caesar Cipher)


    非常推荐《密码编码学与网络安全--原理与实践(第八版)》这本书。

    密码体质五元组:P,C,K,E,D

    P,plaintext,明文空间

    C,ciphertext,密文空间

    K,key,密钥空间

    E,encrypt,加密算法

    D,decrypt,解密算法

    单表代换

    单表:英文26字母的顺序

    代换:替换为别的字母并保证解密的唯一性

    假如我们让加密方式为所有字母顺序移动3位

    1. import string
    2. string.ascii_lowercase
    3. 'abcdefghijklmnopqrstuvwxyz'

    密钥 ,b=3

    加密算法y=(x+b)mod26

    1. plaintext='flag{Caesar Cipher}'
    2. def encrypt(plaintext,b):
    3. ciphertext=''
    4. for each in plaintext:
    5. if each in string.ascii_lowercase:
    6. ciphertext+=string.ascii_lowercase[(string.ascii_lowercase.index(each)+3)%26]
    7. else:
    8. ciphertext+=each
    9. return ciphertext
    10. ret=encrypt(plaintext,3)
    11. # iodj{Cdhvdu Clskhu}

    解密算法为x=(y-b)mod26

    1. ret='iodj{Cdhvdu Clskhu}'
    2. def decrypt(ciphertext,b):
    3. plaintext=''
    4. for each in ciphertext:
    5. if each in string.ascii_lowercase:
    6. plaintext+=string.ascii_lowercase[(string.ascii_lowercase.index(each)-3)%26]
    7. else:
    8. plaintext+=each
    9. return plaintext
    10. ret=decrypt(ret,3)
    11. # flag{Caesar Cipher}

    密钥空间26

    明文空间,密文空间均为26个英文字母(无法加密其他字符和数字)

    当b=13时,加密算法也能解密,此时这种加密也被成为ROT13。

    如果不使用英文标准表,而是从26字母的全排列(26!)中随机选择一个,敌手单纯爆破这个单表和密钥还是很难的。

    不过单表代换密码有一个问题:无法掩盖英文字母的统计学特征(如字母e的出现次数更多)。

    假如:e在明文中出现700次,e被加密为s,s在密文中也会出现700次。敌手可以通过分析单个字母,词组,词缀等方法直接跳过秘钥,直接尝试恢复明文。

    对于加密算法y=(x+b)mod26而言,无法通过增大b的取值从而增加密码强度,也无法通过嵌套多层的加密方式增加密码强度。

  • 相关阅读:
    阿里巴巴面试题- - -JVM篇(十九)
    空洞卷积、可变形卷积、可变形ROI Pooling
    【PAT甲级 - C++题解】1062 Talent and Virtue
    web前端期末大作业——HTML+CSS简单的旅游网页设计与实现
    [附源码]计算机毕业设计JAVAjsp医院药房管理系统
    淘宝/天猫API:item_search_img-按图搜索淘宝商品(拍立淘)
    Lora训练Windows[笔记]
    JVM监控及诊断工具-GUI篇
    第三方验收测试报告有什么作用?如何获取权威软件测试报告?
    Python + Django4 搭建个人博客(一) :搭建博客需要哪些技术,网站包括哪些内容
  • 原文地址:https://blog.csdn.net/amber_o0k/article/details/132775332
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号