八卦的阴阳刚好可以跟计算机中的“0”,“1”相对,所以我试着将ASCII码表中包含的字符转化为用八卦卦象表示,并用python制作了一个简单的加密解密程序。因为最近才接触编程,技术浅陋,某些段落可能使人血压飙升(其实我自己就看着很难受,但苦于能力不足,找不到好的替代方法)。
众所周知,ASCII码如果表示为二进制,一般表示为八位二进制数字(一个字节)。
如小写字母a表示为01100001。因为ASCII码第一位都是0,所以我将0去掉,变为1100001。然后按照1-3-3结构分割,成为1-100-001。
然后进行转化
首先因为第一个部分只会是“1”或“0”,所以把第一个部分的“0”转化为“逆”,“1”转化为“正”。就得到 正-100-001。
然后把后两个部分的“1”对应为“阳”,“0”对应为“阴”,可以得到 正-阳阴阴-阴阴阳。
最后按照卦象,阳阴阴对应艮卦,阴阴阳对应震卦,所以最后得到的结果是 正-艮-震,即正艮震。
至此,字母a对应为“正艮震”。
以下为加密/解密程序源码。
import time
codelist = []
fuxi = ['坤', '震', '坎', '兑', '艮', '离', '巽', '乾']
Judge = int(input('扣1加密,扣0解密'))
if Judge == 1:
strlist = input("在此输入要加密的字符(仅支持ASCII码支持的字符)")
for character in strlist:
if len(bin(ord(character)).replace('0b', '')) == 7 :
codelist.append(str(bin(ord(character)).replace('0b','')))
else:
codelist.append('0'+str(bin(ord(character)).replace('0b', '')))
for code in codelist:
code3 = []
code2 = list(code)
if code2[0] == '0':
cncode0 = '逆'
else:
cncode0 = '正'
cncode1 = str(fuxi[int(str(code2[1]+code2[2]+code2[3]), 2)])
cncode2 = str(fuxi[int(str(code2[4]+code2[5]+code2[6]), 2)])
cncode = cncode0+cncode1+cncode2
print(cncode, end='~')
elif Judge == 0:
string = input("在此输入要解密的密码")
cncodelist = string.split('~')
del cncodelist[-1]
for cncode in cncodelist:
cncodesplit = list(cncode)
if cncodesplit[0] == '逆':
code1 = '0'
else:
code1 = '1'
if len(str(bin(fuxi.index(cncodesplit[1])).replace('0b', ''))) == 3:
code2 = str(bin(fuxi.index(cncodesplit[1])).replace('0b', ''))
elif len(str(bin(fuxi.index(cncodesplit[1])).replace('0b', ''))) == 2:
code2 = '0'+str(bin(fuxi.index(cncodesplit[1])).replace('0b', ''))
else :
code2 = '00'+str(bin(fuxi.index(cncodesplit[1])).replace('0b', ''))
if len(str(bin(fuxi.index(cncodesplit[2])).replace('0b', ''))) == 3:
code3 = str(bin(fuxi.index(cncodesplit[2])).replace('0b', ''))
elif len(str(bin(fuxi.index(cncodesplit[2])).replace('0b', ''))) == 2:
code3 = '0'+str(bin(fuxi.index(cncodesplit[2])).replace('0b', ''))
else :
code3 = '00'+str(bin(fuxi.index(cncodesplit[2])).replace('0b', ''))
code = code1+code2+code3
character = chr(int(code, 2))
print(character,end='')
time.sleep(0.5)
input('')
附带一个加密的例子:
这是B站首页网址:哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
这是加密后的效果:正离坤~正巽艮~正巽艮~正巽坤~正巽兑~逆乾坎~逆离乾~逆离乾~正巽乾~正巽乾~正巽乾~逆离巽~正艮坎~正离震~正离艮~正离震~正艮坎~正离震~正离艮~正离震~逆离巽~正艮兑~正离乾~正离离~逆离乾~