信息安全,密码学Cryptography,rail fence cipher加密明文”welcome to computer science,秘钥长度4顺序4213
import re
def Encipher(plaintext, keyLength, order):
result_str = ''
plaintext = plaintext.replace(" ", "")
text_list = re.findall(r'.{%s}' % keyLength, plaintext)
index = [i for i in range(keyLength)]
index = sorted(index, key=lambda item: order[item])
for i in range(keyLength):
for text in text_list:
result_str += text[index[i]]
return result_str
if __name__ == '__main__':
plaintext = input('plase input plaintext: ')
keyLength = int(input('plase input keyLength: '))
order = input('plase input order: ')
ciphertext = Encipher(plaintext, keyLength, order)
print('ciphertext =', ciphertext)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string PermuteEncrypt(string s, vector<int> key){
string primal,result;
vector<int> a;
string middle[11];
//存储并删除串中的空格
for (int i = 0; i < s.size(); i++)
if(s[i] == ' ')a.push_back(i);
else primal.push_back(s[i]);
//按置换矩阵key读取
for(int i = 0; i < primal.size(); i++){
middle[i % key.size()].push_back(primal[i]);
}
//字符串合并
for(int i = 0; i < key.size(); i++){
result += middle[key[i]];
}
//读取并还原空格
for (int i = 0, t = 0; i < s.size(); i++)
{
if(t>=a.size())
break;
if(a[t] == i){
result.insert(result.begin() + i,' ');
t++;
}
}
return result;
}
int main(){
string s;
vector<int> key;
key.push_back(3);
key.push_back(1);
key.push_back(0);
key.push_back(2);
getline(cin,s);
cout<<PermuteEncrypt(s,key);
return 0;
}
c cu eemomeccwototsnle prie
import numpy as np
padding='&'
key=4
order='4213'
orgStr='welcome to computer science'
orgStr+=('' if len(orgStr)%key==0 else padding*(4-len(orgStr)%key))
data=list(orgStr)
print(data)
data=np.reshape(data,(-1,4))
print(data)
print([i for i in range(len(order)) ])
print(list(order))
data[:,[i for i in range(len(order)) ]]=data[:,[int(i)-1 for i in order]]
print(data)
data=data.transpose(1,0)
print(data)
data=data.reshape(-1)
print(data)
data=[i if not i=='&' else '' for i in data]
print(data)
print(''.join(data))
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!