Python中异或加密要将str 转为 bitarray, 提示: int类型和纯数字的字符串也可以异或处理, 可能更方便

from bitarray import bitarray

def str2bitarray(msg):  # msg 为str
  msg_2 = ""  # 转为1010拼接成字符串
  for a in msg.encode('utf-8'):
    a_16 = hex(a)[2:] # ascll 码16进制 str

    a_10 = int("1" + a_16, 16)  # 10进制 int, 防止转二进制最高为0丢失, 所以最高位前加1 , 10进制 int
    a_2 = bin(a_10)[3:] # 二进制 str, 利用ascll码值是8bit, 最前面可以加1,  在切片,去掉
    msg_2 += a_2
   return bitarray(msg_2)

def bitarray2str(bitarray_obj):  #  bitarray 转str
  return bitarray_obj.tostring()

def str_to_hex(s):
  return ' '.join([hex(ord(c)).replace('0x', '') for c in s])

def hex_to_str(s):
  return ''.join([chr(i) for i in [int(b, 16) for b in s.split(' ')]])

def str_to_bin(s):
  return ' '.join([bin(ord(c)).replace('0b', '') for c in s])

def bin_to_str(s):
  return ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])

def encryption_bit(msg):  # 利用 异或运算 加密

  #  i_key为  int  任意值

  # msg 为 str 任意值
  i_plain = int("1" + ''.join([bin(int('1' + hex(c)[2:], 16))[3:] for c in msg.encode('utf-8')]))  # 要加密的str 转int
  s_cipher = str(i_plain ^ i_key)
  return s_cipher

def decryption_bit(s_cipher):  # 解密, i_key 要和加密的一样
s_plain = str(int(s_cipher) ^ i_key)[1:]
msg = bitarray(s_plain).tostring()
return msg

python 字符串 转 bit, bitarray 异或加密的更多相关文章

  1. 异或加密 - cr2-many-time-secrets(攻防世界) - 异性相吸(buuctf)

    Crib dragging attack 在开始了解 Crib dragging attack 之前,先来理一理 异或. 异或加密 [详情请戳这里] XOR 加密简介 异或加密特性: ① 两个值相同时 ...

  2. Python 字符串

    Python访问字符串中的值 Python不支持单字符类型,单字符也在Python也是作为一个字符串使用. Python访问子字符串,可以使用方括号来截取字符串,如下实例: #!/usr/bin/py ...

  3. Python 字符串处理大全.

    Python 字符串 字符串是Pyhton中常用的数据类型,我们可以使用引号来创建字符串 . 创建字符串很简单 , 就不说了 . Python 访问字符串中的值 鬼叔本着简洁 使用的设计目的 , 在设 ...

  4. python字符串内容替换的方法(转载)

    python字符串内容替换的方法 时间:2016-03-10 06:30:46来源:网络 导读:python字符串内容替换的方法,包括单个字符替换,使用re正则匹配进行字符串模式查找与替换的方法.   ...

  5. python字符串、列表和文件对象总结

    1.字符串是字符序列.字符串文字可以用单引号或者双引号分隔. 2.可以用内置的序列操作来处理字符串和列表:连接(+).重复(*).索引([]),切片([:])和长度(len()).可以用for循环遍历 ...

  6. Python字符串(Str)详解

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可 字符串的格式 b = "hello itcast. ...

  7. python和c#通用一致的des加密采用CBC和PKCS7

    在python下可以下载pydes 下载地址为 http://pydes.sourceforge.net/ 在c#下实现des加密较为简单,如下: using System; using System ...

  8. 【276】◀▶ Python 字符串函数说明

    参考:Python 字符串函数 01   capitalize 把字符串的第一个字符大写,其他字母变小写. 02   center 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串. ...

  9. Python 字符串和数字

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...

随机推荐

  1. 强一致性hash实现java版本及强一致性hash原理

    一致性 hash 分布式过程中我们将服务分散到若干的节点上,以此通过集体的力量提升服务的目的.然而,对于一个客户端来说,该由哪个节点服务呢?或者说对某个节点来说他分配到哪些任务呢? 强哈希 考虑到单服 ...

  2. vue+axios完美实现前端路由拦截

    一.路由拦截 1.首先在router的index.js里配置一个自定义字段requireAuth,用该字段来判断进入该路由是否需要登录.如果已经登陆则进入该路由,反之则进入登录页面. 如图是路由配置: ...

  3. 定制你自己的vim编辑器

    今天定制了一下自己的vim编辑器,效果嘛,谁用谁知道!话不多说,直奔主题.vim编辑器的配置都在/etc/vimrc文件中. #vim /etc/vimrc 打开配置文件,在尾部添加如下的,不是全都必 ...

  4. JEECG 上传插件升级-标签

    前言: 现有的uploadify上传是基于swf的,随着H5的普及,flash即将退出历史舞台,JEECG团队本着与时俱进的原则,将全面升级JEECG系统中的上传功能,采用新式上传插件plupload ...

  5. Linux发行版:CentOS、Ubuntu、RedHat、Android、Tizen、MeeGo

    Linux,最早由Linus Benedict Torvalds在1991年开始编写.在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及 ...

  6. Oracle使用学习笔记(一)

    一.实体关系模型的三个关键因素 实体:具有相同特征和属性的显示世界事务的抽象,对应面向对象编程中的类,动物就是一个实体 属性:实体具有的特征,如类的属性,动物的名字,体长等 关系:一对一,一对多,多对 ...

  7. PeopleSoft进程卡在“已排队”状态诊断和解决

    进程卡在“已排队”状态的原因很多.最常见的原始是进程调度器服务挂掉了(可以在“进程监视器”页面的“服务器”tab页中查看). 除此之外,还可以进行下面诊断:1. 检查下面3张表:PSPRCSRQSTP ...

  8. Apple watch ,小米微信通知

    Applewatch怎么显示微信通知?iWatch显示微信消息通知设置方法.大家都知道Applewatch上收到微信消息,iWatch是不会显示通知的,需要用户自行设置才行.下面小编来教大家如何设置A ...

  9. unittest框架(惨不忍睹低配版)

    根据我上个随笔的unittest框架优化得来,虽然对于smtp模块还是有点迷糊,不过还是勉强搭建运行成功了,还是先上代码: #login_test.py import requests class L ...

  10. C#分割字符串并统计重复出现的次数

    static void Main(string[] args) { string ss = "12345678904682qwertyuioplkjhgfdsazxcvbnmmlpokuhy ...