python/shell字符串加解密

查看网上很多都是抄袭的代码,大同小异,在前辈的基础上优化代码:

  1. 可自动补全16x字符串位数,解密后移除还原
  2. 优化加密后得到的数据码为base64,更易使用

3. 增加参数实例

4. 增强代码可读性


#!/usr/bin/env python

#coding: utf-8

‘‘‘

+-----------------------------------------------------------------------+

|Author: Cheng Wenfeng <[email protected]>                               |

+-----------------------------------------------------------------------+

‘‘‘

import sys

import base64

import getopt

from Crypto.Cipher import AES

if len(sys.argv) < 2:

print ‘Syntax: %s handle[encode|decode] str \n \

eg: %s  encode  [email protected]‘ % (sys.argv[0],sys.argv[0])

sys.exit()

opts,args=getopt.getopt(sys.argv[1:], "h", [‘help‘])

for opt,arg in  opts:

if opt == ‘--help‘ or opt == ‘-h‘      :

print ‘Syntax: %s handle[encode|decode] str \n \

eg: %s  encode  [email protected]‘ % (sys.argv[0],sys.argv[0])

sys.exit()

Formatkey = ‘\0‘

FormatStr = lambda s: s+(16 - len(s)%16)*Formatkey

key=‘qq277546922qqqqq‘

data=str(sys.argv[2])

def encode(key,data):

keyIV=key

obj = AES.new(key, AES.MODE_CBC,keyIV)

ciphertext = base64.b64encode(obj.encrypt(FormatStr(data)))

print ciphertext

def decode(key,data):

keyIV=key

obj2 = AES.new(key, AES.MODE_CBC,keyIV)

try:

newmesg = obj2.decrypt(base64.b64decode(data))

print newmesg.replace(‘\0‘,‘‘)

except  TypeError:

print ‘Decode Fail‘

if sys.argv[1]==‘encode‘:

encode(key,data)

elif sys.argv[1]==‘decode‘:

decode(key,data)

else :

print ‘handle error‘

sys.exit()

时间: 2024-09-29 17:34:06

python/shell字符串加解密的相关文章

android中使用jni对字符串加解密实现分析

android中使用jni对字符串加解密实现分析 最近项目有个需求,就是要对用户的敏感信息进行加密处理,比如用户的账户密码,手机号等私密信息.在java中,就对字符串的加解密我们可以使用AES算法加密字符串,使用它的好处就不必多说了,但我们又知道android的源代码是可以被反编译的,所以使用纯Java方式的AES加密是不安全的,所以想到了使用android中的jni来对字符串加解密处理,它会产生一个.so文件,更重要的是它通过C/C++代码实现,所以安全行比较高,它可以被反编译成机器码,但几乎

Android jni aes加解密,实现文件的加解密,具体实现可以自行修改,上面的代码为简单介绍,下面的是JNI端实现文件加解密,可以修改为字符串加解密

#include "aes.h" #include "modes.h" #include "e_os2.h" #include "aes_locl.h" #include "opensslconf.h" AES_KEY aes; //aes cbc模式加解密用到的向量 unsigned char iv[AES_BLOCK_SIZE]; for (i = 0; i < AES_BLOCK_SIZE; i

华为OJ:字符串加解密

题目描述 1.对输入的字符串进行加解密,并输出. 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0: 其他字符不做变化. 3.解密方法为加密的逆过程. 接口描述: 实现接口,每个接口实现1个基本操作: void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出 说明: 1.字符串以

字符串加解密

题目描述 1.对输入的字符串进行加解密,并输出. 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0: 其他字符不做变化. 3.解密方法为加密的逆过程 #ifndef _ENCRYPTUNENCRYPT_ #define _ENCRYPTUNENCRYPT_ /*================================ Macros ========

iOS开发:用DES对字符串加解密

参考http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html,做了个小修改,实现PHP,JAVA,Objective-c加解密结果相同.原先Android版的客户端与服务端(PHP)通讯部分内容用DES加密,加密方法:http://www.pocketdigi.com/20121112/940.html直接拷贝原文的源码,发现结果不同,原因在于,我在java和php里用的IvParameterSpec是动态的,就是key转成byt

Python AES - base64 加解密

首先python引用AES加密 from Crypto.Cipher import AES 需要先安装  Crypto  模块, 可以使用 easy_install 进行安装   会自动去官网进行搜索安装 其中代码示例: aes 加密 需要进行加密数据的处理,要求数据长度必须是16的倍数,不足时,在后边补0 class MyCrypt(): def __init__(self, key): self.key = key self.mode = AES.MODE_CBC def myencrypt

python 中将字符串加载为公钥

网址: 示例: import base64 import rsa def strkey(strk): b_str = base64.b64decode(strk) if len(b_str) < 162: return False hex_str = '' # 按位转换成16进制 for x in b_str: h = hex(ord(x))[2:] h = h.rjust(2, '0') hex_str += h # 找到模数和指数的开头结束位置 m_start = 29 * 2 e_star

python Crypto AES-256-ECB 与PHP之间完成加解密

AES算法描述: 首先AES是一种对称加密算法. 算法特点: 1.AES的区块长度固定为128 比特(16字节). # 因此在加密前需要对待加密字符串进行填充,长度填充至128bit整数倍. 2.密钥长度可以是128(AES-128-ECB),192(AES-192-ECB)或256(AES-256-ECB)比特. # 在加解密前需要对加密密钥进行填充,填充至对应位数. 1.php:aes-256-ecb解密: <?php $encryptString = base64_decode($encr

python实现RSA加密和签名以及分段加解密的方案

python实现RSA加解密和签名加解签 1.生成秘钥对 在这边为了方面演示,手动生成一个密钥对(项目中的秘钥对由开发来生成,会直接给到我们) 生成秘钥对的时候,可以指定生成秘钥的长度,一般推荐使用1024bit, 1024bit的rsa公钥,加密数据时,最多只能加密117byte的数据),数据量超过这个数,则需要对数据进行分段加密,但是目前1024bit长度的秘钥已经被证明了不够安全,尽量使用2048bit长度的秘钥.2048bit长度的秘钥,最多245byte长度的数据 计算公式如下: 秘钥