python实现的Caesar加解密算法

Caesar算法是最简单的加解密算法...

# Caeser Cipher

import sys,os

MyCypher = 25

MyDict = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz `[email protected]#$%^&*()_+[]\\;\',./{}|:"<>?'

plaintext = 'Hello World!'
cryptmsg = ''

def encrypt(text, cypher):
    out_text = ''
    for e in text:
        x = e
        if (e in MyDict):
            idx = MyDict.find(e)
            idx = idx + cypher
            idx = idx % len(MyDict)
            x = MyDict[idx]
        out_text = "%s%c" % (out_text, x)
    return out_text

def decrypt(msg, cypher):
    out_text = ''
    for e in msg:
        x = e
        if (e in MyDict):
            idx = MyDict.find(e)
            idx = idx - cypher + len(MyDict)
            idx = idx % len(MyDict)
            x = MyDict[idx]
        out_text = "%s%c" % (out_text, x)
    return out_text

def ask_cypher():
    user_input = raw_input('Input Cypher: ')
    return long(user_input)

def ask_text():
    user_input = raw_input('Input Text: ')
    return user_input

def ask_action():
    print '-----------------------'
    print '0 - Exit'
    print '1 - Encrypt'
    print '2 - Decrypt'
    print '-----------------------'
    user_input = raw_input('Select You Action: ')
    if user_input in ['0', '1', '2']:
        if user_input == '0':
            return 'exit'
        elif user_input == '1':
            return 'enc'
        elif user_input == '2':
            return 'dec'
    else:
        return 'exit'

# ---------------------------------------------------------------
# Program Start Here
# ---------------------------------------------------------------
MyCypher = ask_cypher()
print 'Cypher: %d' % MyCypher

for i in range(0, 100):
    action = ask_action()

    if action == 'dec':
        cryptmsg = ask_text()
        print decrypt(cryptmsg, MyCypher)
    elif action == 'enc':
        plaintext = ask_text()
        print encrypt(plaintext, MyCypher)
    else:
        print 'Exit!'
        break

执行后,输入密码(数字), 然后选择动作, 最后输入密文或原文, 就能得到原文或密文了.

时间: 2024-07-29 11:27:19

python实现的Caesar加解密算法的相关文章

[掌眼]iOS / Android / java / node.js 通用的 AES256 加解密算法

example.m NSString *text = @"text"; NSString *key32 = @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding]; NSString *encryptedData = [[data AES256EncryptWithKey:key32] base64EncodedStringWi

加解密算法

加解密算法概述 工作中经常用到加解密算法大概有以下三种: 单项散列算法 对称散列算法 非对称散列算法 单项散列算法 由不定长的数据转化为固定长的字符串,代表有: sha1 sha1($str[,raw_out=false]);//算法不够复杂 raw_out默认为false,生成一个32位的加密串 如果为true,则生成一个16位的二进制流 md5 md5($str[,strict=false]) strict默认为false,生成一个32位的加密串 如果为true,则生成一个16位的二进制流

DES加解密算法Qt实现

算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为bengold1979的网友表示感谢!本文是对DES算法代码一文代码的具体描述.该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 图片及部分解析来自 http://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E5%8A%A0%E5%AF%86%E6%A8%9

【转】各种加解密算法比较

转自: http://blog.csdn.net/pengzp/article/details/6556674 二.          加密算法介绍 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合. 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高. AES(Advanced Encryption Standard

AES加解密算法Qt实现

[声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外,图片及部分解析来自http://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86.图1为个人劳动成果,请勿盗用此图. [简介] AES(Advanced Encryption Standard,

JavaScript与C#互通的DES加解密算法

原文地址:传送门 本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DES解密算法将其解密,得到原始数据,以起到一定的保密作用.但基于算法本身和密钥保密程度方面的考虑,使用本算法加密后的数据,其保密程度不是很高,故请酌情使用. 声明:本文中的JavaScript版的DES加解密算法来自于互联网,但为了方便于转化成C#版本的代码,本人对其进行了细微调整. JavaScri

DES加解密算法的简单实现

前几天刚写完一个简单的DES算法的实验,拿来作为第一次发到博客的随笔,填充一下空空如也的博客,献丑了 因为主要目的是Easy-To-Understand,再现一个直观的DES加解密的过程,所以很浪费地每一个数据位都用一个short整型存储,用来理ying解fu过zuo程ye就好(虽说DES这种对称加密算法十多年前就已经被淘汰了,现在一般建议用AES或者DES3 “1973 年,美国国家标准局(NBS)开始征集一种标准的数据加密标准算法(DES),以用于非机密性政府机构.商业部门和民间的对非机密的

各种加解密算法比較

二.          加密算法介绍 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,经常使用的算法包含: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合. 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高. AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高: AES与3DES的比較 算法名称 算法类型

对称加解密算法解析

一.概述 cryptosystem密码学系统分为私钥系统及公钥系统. 私钥系统:指加解密双方事先做了私有信息约定,采用对称密钥算法: 公钥系统:指发送方用公开凭证对数据进行加密后传输,接收方使用私有凭证进行解密,采用非对称密钥算法: 对称加密分类 流加密(stream cipher),加密和解密双方使用相同伪随机加密数据流,一般都是逐位异或或者随机置换数据内容,常见的流加密算法如RC4. 分组加密加密(block cipher),也叫块加密,将明文分成多个等长的模块(block),使用确定的算法