信息加密

信息加密

By 白熊花田(http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢。

* 注题目来自:http://www.pythontip.com *

This is my first blog with markdown editor.

描述:

给你个小写英文字符串a和一个非负数b(0<=b<26), 将a中的每个小写字符替换成字母表中比它大b的字母。

这里将字母表的z和a相连,如果超过了z就回到了a。例如a=”cagy”,b=3, 则输出 fdjb

分析:

挨个处理字符串中的每个字符,然后每个字符的ascii码值加b,如果结果大于z的acsii码值,需要取余处理,然后依次输出转变后的字符。

尝试后发现int(‘a’)是会报错的。所以这种方法需要其他函数的帮助。查阅后发现了chr和ord两个内建函数。

chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。

如:print chr(65) 将输出: ‘A’

ord()函数是chr()函数(对于8位的ASCII字符串)或unichr()函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的ASCII数值,或者Unicode数值,如果所给的Unicode字符超出了你的Python定义范围,则会引发一个TypeError的异常。

如:print ord(‘A’) 将输出: 65

代码

def encrypt(a,b):
    ans = ‘‘
    for i in range(len(a)):
        ans += chr((ord(a[i]) + b - 97)%26 + 97)
    print ans
encrypt(a,b)

更pythonic的方式:

print "".join([chr((ord(i) + b - 97)%26 + 97) for i in a])

其他思路

pythontip上的解题报告总是有些让人眼前一亮的方法和代码。

下面这种方法并没有使用将字符转换为acsii码的方式,而是每个字符找到它们在小写字母中的位置(使用在小写字母字符串查找的方式)从而避免了转换。

ff = "abcdefghijklmnopqrstuvwxyz"
f=‘‘
for i in a:
    d=(ff.find(i)+b)%26
    f=f+ff[d]
print f

使用上面这种思路的更pythonic的方法有:

s = "abcdefghijklmnopqrstuvwxyz"
print "".join(map(lambda c:s[(s.index(c)+b)%26], a))

下面这种方法看了很久才看懂:

首先string.lowercase是所有的小写字母字符串,f等于”abcdefghijklmnopqrstuvwxyz”。

接着,利用了切片操作得到了位移后的小写字符串数组。最后,利用string的maketrans函数进行原顺序的小写字母字符串与位移后的小写字母字符串的对应关系,然后使用string的translate函数将a串中的内容按照maketrans函数给的对应关系进行转换,输出转换后的结果。

import string
f = string.lowercase
t = f[b:] + f[:b]
trans = string.maketrans(f, t)
print str(a).translate(trans)
时间: 2024-10-11 04:13:12

信息加密的相关文章

浅谈信息加密技术和算法

1单向散列加密 单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,不可逆的.常用的单向散列算法有MD5,SHA等. 比如网站中,用户密码,一般可以进行MD5加密后保存,用户登录时,对用户输出的密码进行加密后和数据库密文进行比较,如果一致,则验证成功. 为了加强计算的安全性,可以对数据加上密钥,增加破解的难度. 推荐使用 apache common的 commons-codec的 jar包 比如(commons-codec-1.8.jar)    

使用RSA进行信息加密解密的WebService示例

使用RSA进行信息加密解密的WebService示例 按:以下文字涉及RSA对WebService传递的数据的加密解密,如果您已经熟知RSA或是有其它更好的方法请不要往下看以免浪费时间. WebService采用的协议是SOAP,它基于HTTP,而HTTP是明文方式,也就是说,采用WebService传递的数据是明文的.如果是天气预报这种公开的只读信息的WebService无所谓,如果涉及写入或是和私密数据相关,那么明文传递就有很大的潜在危险性,必须加以遏止. 一般来说有两种方法,一是采用htt

超越007:今天的我们是如何进行信息加密的?

最近受区块链的影响,种种加密算法也跟着火了起来.在区块链之前,我们理解的"加密"多半是像007和<潜伏>里那样,用各种手段对文字信息进行加密处理,好让绝密的消息在敌人的眼皮子低下瞒天过海. 不过在今天,加密的目的除了进行间谍行动,还有维护数据安全等等.与此同时,信息加密的手段也在随着区块链.深度学习等技术的发展不断进步. 007的老手段,能不能应对AI时代的新需求? 在传统的信息加密手段中,大致分为两种,一种是物理方法,另一种则是数学方法. 物理方法,就是我们经常在影视剧里

数据库链接信息加密

业务场景: web项目部署在Tomcat中,数据库链接信息直接明文写在了项目的配置文件中,导致验收不通过,要求把数据库链接信息加密. 项目背景: properties文件存储DataSource信息 spring配置文件中,org.apache.commons.dbcp2.BasicDataSource控制加载DataSource信息 设计方案: properties文件中修改密码为密文 重写BasicDataSource类,在setpassword方法中添加解密步骤 spring配置文件中,用

构成信息加密体系的三类基本算法

信息加密技术经过多年的发展,由一些基本算法组合形成了许多成熟的应用,如数字签名,安全证书,HTTPS,以及最近大热的数字加密货币,区块链等.这些看似种类繁多的应用,其实都由三类基本的算法通过不同的组合来实现,这三类算法分别是: 数据摘要(在很多场合也被称作哈希运算),对称加密,非对称加密.本文抛开这三类算法在不同实现方案中的差异,抽象出各类算法的共性,提纲挈领地描绘出三类算法在加密体系中的应用场景,让开发者能在短时间内对信息加密体系有个全局的认识,并能将这三类算法应用在实际的需求场景中,希望本文

云非币 采用全部数据信息加密形式,从软件建设、交易订单和隐私管理等方面运用业内最先进稳定的技术,确保

AORIEX -- 云非(币),最懂你Aoriex 电子货币公司 (aoriex ) 公司致力于通过创新的密码学技术为隐私电子货币建立一套新的标准. 我们相信隐私增强了社会关系和社会机构,帮助社会抵御敌人,帮助社会变得更加和平和繁荣.在一个开放和可编程的金融系统中,隐私是保证互换性和保证密码学货币可以像交换媒介一样可互换的的唯一方法.为了进行商业活动,公司需要隐私,特使是在公有链情况下.另外,我们相信个人隐私对于像尊严.亲密和道德这些人类核心价值来说是至关重要的.aoriex 是一个科学驱动的

大型网站技术架构,8网站的安全架构之信息加密技术及密钥安全管理

敏感数据,应该加密处理,信息加密技术可分为三类:单向散列加密.对称加密.非对称加密 8.2.1 单向散列加密 是值通过对不同输入长度的信息进行散列计算,得到固定长度的输出,不能对固定长度的输出进行计算从而获取输入信息,不能根据输出逆向获得输入信息. 原文地址:https://www.cnblogs.com/wozixiaoyao/p/11621008.html

ActiveX网页信息加密

现在有些网站还在使用http协议,这样子在登录的时候由于http协议是没有加密功能的所以用户的密码很容易在发送到服务器途中被网络抓取到,或者是浏览器一般都会把用户的密码记录下来,这样就很危险了.如果我们在网页上输入的密码在被浏览器记录前或发送到服务器前通过ActiveX插件进行加密,这样可以起到信息安全作用. #region JS调用方法 #region AES private const string aesKey = "12345678qwertyui";//AES秘钥 priva

信息加密之消息摘要算法的SHA

SHA是消息摘要算法的一种实现方式,前面已经总结过MD2\4\5的实现,接下来就为大家总结一下SHA的实现. SHA的jdk实现: private static void SHA_JDK(){ try { MessageDigest digest = MessageDigest.getInstance("SHA");//我们可以通过SHA\SHA-1\SHA-384\SHA-256\SHA-512来获得不同的消息摘要密钥 digest.update(src.getBytes()); S