仿射密码(加法密码+乘法密码)

仿射密码加密算法 算法简述:    加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是:     C= Ek(m)=(k1m+k2) mod n     M= Dk(c)=k3(c- k2) mod n(其中(k3 ×k1)mod26 = 1)         仿射密码具有可逆性的条件是gcd(k1, n)=1。当k1=1时,仿射密码变为加法密码,当k2=0时,仿射密码变为乘法密码。   阅读详情
仿射密码技术:

(加法密码+乘法密码)

(可先参见加法密码与乘法密码原理)


C= Ek(m)=(k1 m+k2) mod n , K1,K2∈Zn ,gcd(k1,n)=1
M= Dk(c)=k3(c- k2) mod n(其中k3为k1逆元)
(1)0<k1<n
(2)k1与n互素,即要满足gcd(k1, n)=1,否则不存在模逆元,不能正确解密
所以即满足乘法密码技术的要求,又满足加法密码的要求,如复合函数一般
K1 K2为密钥。当K1=0时,仿射密码即为乘法密码技术,当K1=1时,即为移位替换密码(加法密码)



乘法密码的密码空间大小是φ(n),φ(n)是欧拉函数。
当n为26字母,则与26互素的数是1、3、5、7、9、11、15、17、19、21、23、25,即φ(n)=12 因此乘法密码的密钥空间为12。
注意:K1=1时 加密变换为恒等变换(即无变化)


测试案例如下:


import java.util.ArrayList;
import java.util.Scanner;


public class 仿射密码技术 {


public static int x=0,y=0;
public static ArrayList<Integer> SecretPlace=new ArrayList();
public static int gcd(int a,int b){
return b>0?gcd(b,a%b):a;
}
public static int ex_gcd(int a,int b){
if(b==0)
   {
       x=1;y=0;
       return a;
   }
   int q=ex_gcd(b,a%b);
   int t=x;x=y;y=t-a/b*y;
   return q;
}
public static void CountSecretPlace(int n){
SecretPlace.add(1);
for(int i=2;i<n;i++){
if(gcd(i, n)==1)
SecretPlace.add(i);
}
}
public static void main(String[] args) {
int k1,k2=0;
Scanner scan=new Scanner(System.in);
System.out.println("第一行输入密码表总数n\n"
+ "第二行输入各明文字符\n"
+ "第三行输入待加密明文");
int n=scan.nextInt();
char CharArrays[]=new char[n];
CharArrays=scan.next().toCharArray();
scan.nextLine();
String normalStr=scan.nextLine();
CountSecretPlace(n);
System.out.println("密钥空间如下,您可选择其中一个值作为乘法密钥K1");
System.out.println(SecretPlace);
k1=scan.nextInt();
while(!SecretPlace.contains(k1)){
System.out.println("只能选择密钥空间中的密钥值!请重新选择");
k1=scan.nextInt();
}
System.out.println("请选择加法密钥K2,0=<k2<n");
k2=scan.nextInt();
while(k2<0||k2>=n){
System.out.println("请重新选择加法密钥K2,0=<k2<n");
k2=scan.nextInt();
}
ex_gcd(k1, n);
int out=(x+n)%n;
System.out.println("您选择的乘法密钥模逆元为:"+out);
String splitStrs[]=normalStr.split(" ");
ArrayList<Character> templist=new ArrayList<>();
System.out.println("加密后如下:");
for (int j = 0; j < splitStrs.length; j++) {
char normalChars[]=splitStrs[j].toCharArray();
for (int p = 0; p < normalChars.length; p++) {
int t=((normalChars[p]-'a')*k1+k2)%n;
normalChars[p]=CharArrays[t];//加密
System.out.print(normalChars[p]);
int tt=(t+n-k2)%n;
normalChars[p]=CharArrays[tt*out%n];//解密
templist.add(normalChars[p]);
}
System.out.print(" ");
templist.add(' ');
}
System.out.println("\n解密后如下:");
for(Character o:templist){
System.out.print(o);
}
}
}
运行结果如下:


第一行输入密码表总数n
第二行输入各明文字符
第三行输入待加密明文
26
abcdefghijklmnopqrstuvwxyz
a man liberal in his views
密钥空间如下,您可选择其中一个值作为乘法密钥K1
[1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25]
1
请选择加法密钥K2,0=<k2<n
3
您选择的乘法密钥模逆元为:1
加密后如下:
d pdq olehudo lq klv ylhzv 
解密后如下:
a man liberal in his views 
C语言实现经典密码算法:从加法到Hill密码 本文还有配套的精品资源,点击获取 简介:加密技术是信息安全的核心,尤其是古典密码算法为现代加密技术提供了基础。本文深入探讨了在C语言中实现的各类古典密码算法,包括加法、乘法、仿射、Caesar、标准字头、Playfair、Vigenere、Beaufort、Vernam和Hill密码。文章详细说明了每种算法的C语言实现过程和原理,并强调了安全性考虑如密钥管理和随机数生成。这... 阅读详情

相关推荐

大模型事件抽取学习——论文学习笔记《LLMs Learn Task Heuristics from Demonstrations:......》

本篇博客介绍一篇发表在2024 ACL main上的文章:《LLMs Learn Task Heuristics from Demonstrations: A Heuristic-Driven Prompting Strategy for Document-Level Event Argument Extraction》 方向:大模型事件抽取 本篇博客为个人阅读论文的总结与笔记,在这里进行简单的分享 论文链接:https://arxiv.org/abs/

weixin_53751318的博客 1852

仿射加密例题计算

对单词hot进行加密并进行解密。解密 a的逆元(x-b) (mod m)加密 ax+b。

XUYH6904的博客 643

从LLaMA到LLaMA-MoE:轻量级混合专家模型构建与实战指南

混合专家(Mixture-of-Experts, MoE)是一种先进的神经网络架构,其核心原理是通过门控网络动态地为不同输入选择不同的专家子网络进行计算,从而实现模型容量的指数级扩展,同时保持推理时的计算量基本不变。这种稀疏激活的特性赋予了MoE极高的技术价值,使其成为解决大模型训练与推理成本矛盾的关键技术之一,在自然语言处理、多模态学习等场景中展现出巨大潜力。本文聚焦于**LLaMA-MoE**这一具体实践,深入探讨了如何基于成熟的稠密模型(如LLaMA),通过**专家构建**与**持续预训练**两大关键

weixin_28730549的博客 565

仿射密码 -- 逆元

仿射仿射密码是一种替换密码。它是一个字母对一个字母的。它的加密函数是:其中a和m互质,m是字母的数目。解码函数是: ​ 其中a和

Sky_sy的博客 4109

RKNN3588——YOLOv8的PT模型转RKNN模型

1. 首先克隆rknn修改后的ultralytics版本项目到本地主要是修改了源码的ultralytics/nn/modules/head.py和ultralytics/engine/exporter.py两个文件。2. 使用修改后的ultralytics对pt模型进行模型转换,此处的format=rknn代表支持rknn后续的转换,而不是用onnx,一定要注意!!!

张飞飞的博客 7178

小论文/大论文必备 | YOLO多模态目标检测、绘制曲线对比图 | 引入多种绘制曲线对比图,包括mAP0.5,mAP0.5:0.95,Loss损失变化的曲线对比

本文通过可视化方法分析YOLO多模态模型的训练过程,对比不同实验的检测精度和损失函数变化。主要内容包括:1)绘制mAP@0.5和mAP@0.5:0.95曲线评估检测精度;2)分析边界框回归损失(box_loss)、分类损失(cls_loss)和分布式损失(dfl_loss)的收敛趋势;3)提供完整的Python代码实现,支持多实验对比,可生成高清曲线图。该方法能直观展示模型训练效果,便于优化策略评估和参数调优。

Ai缝合怪、助力小伙伴高效发论文 261

仿射密码解析与实例

仿射密码的加密函数是 E(x)=(ax+b)(modm) 其中 x表示明文按照某种编码得到的数字 a和 m互质 m是编码系统中字母的数目 解密函数是 D(x)=a−1(E(x)−b)(modm),D(x)和E(x)均代表数字,a,b是密钥,0≤a,b≤m. 其中gcd(a,26)表示a和26的最大公因,gcd(a,26)=1表示a和26是互素的. a-1表示a的逆元,即a-1*a ≡ 1mod...

Cainell的博客 8380

2023.03.27更新大麦网PC端抢购软件和使用教程

近期发现大麦网页端抢购页面悄然发生变化,之前可以在页面选择票价、档次,并且点击按钮进行购票,现在不行了,新的页面如下图所示。已经安全没有了点击按钮,因此,但是并不代表不能像以前之前那样。

猫敷雪 1万+

仿射密码的加密与解密

目录简介加密函数解密函数乘法逆元例题加密:解密:代码(python版) 简介 仿射密码为单表加密的一种,字母系统中所有字母都藉一简单数学方程加密,对应至数值,或转回字母。它是一种替换密码,利用加密函数一个字母对一个字母的加密. 加密函数 加密函数是 E(x)= (ax + b) (mod m),其中,a和m互质,m是字符集的大小。 (例如,26即是以26个字母作为编码,当m是26时,a必须是1,3,5,7,9,11,15,17,19,21,23,25其中之一) 解密函数 解密函数为D(x) = a^-1(

Pioo_的博客 2万+

告别Python中间件!C#原生调用YOLOv11/v12:工业视觉检测零语言壁垒全流程

本文介绍了一种基于C#和ONNX Runtime的工业视觉检测解决方案,解决了传统YOLO模型在工业应用中面临的三大痛点:语言壁垒、性能损耗和模型更新困难。该系统采用三层架构设计,支持C#原生调用YOLO模型,无需中间件,性能损耗低于5%,满足工业产线30FPS+的实时性要求。文章详细阐述了环境搭建、模型导出规范、核心代码实现及工业级优化方案,提供可直接用于生产环境的完整流程,实现了训练与部署的解耦,显著降低了维护成本。该方案兼容主流YOLO版本,支持全平台部署,为工业视觉检测提供了高效可靠的C#集成方案。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 187

linux arm64 Debian12移植操作手册

2023年6月10号Debian官方出了debian12 arm64版本的。如果需要完全适配这个系统的话,需要linux6.10版本。应客户的需求,需要在Debian11升级为Debian12版本。

qq_45147279的博客 2169

密码学复习

1.概论 2.信息论基础 3.序列密码 4.分组密码 5.公钥秘钥 6.身份认证

weixin_55749751的博客 3457

宇瞳杯视讯镜头完成版(除公差/鬼像分析)

宇瞳杯视讯镜头完成版(除公差/鬼像分析)

weixin_72050316的博客 1049

加法密码java_仿射密码(加法密码+乘法密码)

C= Ek(m)=(k1 m+k2) mod n , K1,K2∈Zn ,gcd(k1,n)=1M= Dk(c)=k3(c- k2) mod n(其中k3为k1逆元)(1)0(2)k1与n互素,即要满足gcd(k1, n)=1,否则不存在模逆元,不能正确解密所以即满足乘法密码技术的要求,又满足加法密码的要求,如复合函数一般K1 K2为密钥。当K1=0时,仿射密码即为乘法密码技术,当K1=1时,即为...

weixin_39917485的博客 929

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

信息安全-古典密码Python实现

最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。代换密码算法的原理是使用代换法进行加密,就是将明文中的字符用其他字符替代后形成密文。例如,明文字母a、b、c、d,用D、E、F、G做对应替换后形成密文。E(m)为密文字母在字母表中对应的位置数。其中,m、c、k 是满足0 < m, k < 25,且 gcd(k,26)=1 的整数。(2) 若 Y3=0,返回 X3=gcd((3) 若 Y3=1,返回 Y3=gcd(存在模m的乘法逆元的充要条件是gcd(

weixin_70611059的博客 1285

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

信息安全-密码分析

信息安全-密码分析

qq_60675627的博客 257

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

密码学笔记——简单密码Python实现

密码学笔记古典密码单表替代密码1. 加法密码2. 乘法密码 古典密码 单表替代密码 构造一个密文字母表(下面讲的例子都以26个字母的字母表为例),用密文字母表中的字母或者字母组来代替明文字母或字母组,各字母组或字母组的相对位置不变,但其本身的值改变了。 将26个字母与十进制数字中的0~25相对应,数的加法和乘法都定义为模26的加法和乘法。 1. 加法密码 模p的加法: a%p(或a(mod p))...

gbxiaowang的博客 3253

密码学——古典密码中的基本加密运算附简单例题

密码学——古典密码中的基本加密运算附简单例题。本篇文章将对古典密码中使用到的基本加解密运算进行总结,并展示个别加减密运算的简单例题,从而使读者更加容易理解古典密码中的基本加减密运算的原理。

努力敲代码的小盆友 4476

第六讲 古典密码算法(置换密码 & 单表代替密码算法 & 多表代替密码算法)

1 置换(Permutation)密码 对明文字符或字符组进行位置移动的密码 明文的字母顺序被打乱了,但明文字母本身不变 attack at dawnATCADWTAKTAN天书( Scytale ) 500 B.C.,斯巴达人在军事上用于加解密 发送者把一条羊皮纸螺旋形地缠在一个圆柱形木棒上,核心思想是置换。 木棒的直径需要保密2 单表代替密码算法 代替密码 代替(Substitution)密码构造一个或多个密文字母表,然后用密文 字母表中的字母或者字母组来代替明文字母或字母组,各字母或

coderge's 优快云 Blog. 1万+

关于仿射密码的分析

代替密码构造 使用加法方式构造一种代替密码。 五元组(M,C,K,E,D)中各项如下所示: 明文 \[case\] 加密算法: \[e(x)=x+a (mod 26) \quad a ∈ Z / (26)\] 密钥: \[a = 5\] 密文: \[HFYJ\] 解密算法: \[x=e(x)-a (mod 26) \quad a ∈ Z / (26)\] 仿射密码分析 设计思想 仿射密码由加法密码...

weixin_30527143的博客 955

古典密码——代替密码

代替密码 什么是代替密码? 首先构造一个或多个密文字母表,然后用密文字母表中的字母或字母组来代替明文字母或字母组,各字母或字母组的相对位置不变,但其自身发生改变。 代替密码又分为单表代替密码、多表代替密码和多名代替密码。 一、单表代替密码 单表代替密码又称简单代替密码,它只使用一个密文字母表,并且由密文字母表中的一个字母代替明文字母表中的一个字母。 所以说单表代替建立了由密文到明文的一对一的映...

weixin_42324313的博客 6033

密码学:古典密码.代替密码.仿射密码加密与解密 (广义欧几里得除法)

j=i*k1+k0 mod n 只对大写英文加密n为26。f(ai)=bi=aj (i,j为下角标)在找k1时用广义欧几里得除法得到1~25之内与26互素的数字放在p数组里面,用于密钥k1的选择。在输入时密文为字符串,通过ASCII码进行加减A对应的ASCII码把英文字母对应为0~25。其中:要求 (k1,n)=1, 0

zhangshuangrui的博客 701

替换(代换)密码技术【密码学笔记】

教材《应用密码学》-- 西安电子科技大学出版社 概念 将明文中的每一个字符均被替换成另一个字符(密文字符),接收者对密文做反向替换就可以恢复出明文。 替换密码是基于符号替换的密码技术,以符号的置换来达到掩盖文明信息的目的。 1、单字符单表替换密码技术 单表单字符的含义是对明文中所有的字符都使用一个固定的映射,即: 任何明文加密、密文解密均使用同一个密码表。 明文中相同的...

CZC1999的博客 4421

放射密码c++(欧几里得算法)

仿射密码

weixin_65113709的博客 1443

简述古典密码算法

我简单的说一下两种古典密码算法,置换密码算法和代替密码算法。 置换密码 置换密码对明文字符或字符组进行位置移动的密码,明文的字母保持相同,但顺序被打乱了。例如:明文是student,奇数位置的字母为suet,偶数位置的字母为tdn,奇书位置的字母放前面偶数位置的字母放后面,重新组合后的密文为suettdn。 代替密码 代替密码构造一个或多个密文字母表,然后用密文字母表中的字母或者字母组来代替明文字...

weixin_44127339的博客 2187

替代密码

替代密码又分为单表替代密码,多表替代密码 1. 单表替代密码 单表替代密码又称简单替代密码,他只使用一个密文字母表,并且由密文字母表中的一个字母代替明文字母表中的一个字母。 单表替代建立了由密文到明文的一对一的映射关系。 移位密码就是一种单表替代密码 大佬的博客又划分出了加法密码,乘法密码。我觉得加法密码就是移位密码,乘法密码就是栅栏密码。 再有就是仿射密码,仿射密码结合加法密码和乘法密码,用一个多项式来进行明文的变换。 f(x)=(ax+b) mod m 2. 多表替代密码 由于单表代替密码只是用一个密

宗泽的博客 2635
上一篇: 乘法密码
下一篇: 密钥字密码
JumpFly_W
博客等级 码龄17年 72粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值