首页 > 其他分享 >仿射变换加密

仿射变换加密

时间:2023-05-25 16:32:00浏览次数:60  
标签:加密 cout int char key 仿射变换


根据公式c = Ea, b(m) ☰ a * m + b (mod 26);

如果已知a, b, 加密非常简单,代码如下:

#include <bits/stdc++.h>
using namespace std;
int a, b;
void Input()
{
    int p, val;
    char key;
    char key_2[1010];
    cout << "请输入a, b的值(中间以空格分开)" << endl;
    scanf("%d %d", &a, &b);
    cout << "一次输入一个字符请输入 1 否则请输入 2" << endl;
    scanf("%d", &p);
    if(p == 1)
    {
        getchar();
        while(scanf("%c", &key) != EOF)
        {
            if(key != '\n')
            {
             val = ((key - 'A') * a + b) % 26;
            key = 'A' + val;
            cout << "val = " << val << " key =  " << key << endl;
            }
        }
    }
    else
        {
            getchar();
            gets(key_2);
            int len = strlen(key_2);
            for(int i = 0; i < len; ++i)
            {
                if(key_2[i] >= 'A' && key_2[i] <= 'Z')
                {
                 val = ((key_2[i] - 'A') * a + b) % 26;
                 key_2[i] = val + 'A';
                }
            }
            cout << key_2 << endl;
        }

}
int main()
{
    Input();
}



标签:加密,cout,int,char,key,仿射变换
From: https://blog.51cto.com/u_16129621/6349660

相关文章

  • mysql数学和日期和加密函数
    1. 数学相关函数  762rand()返回一个随机浮点值v,范围在0到1之间(即其范围为0≤v≤1.0)。若已指定一个整数参数N.则它被用作种子值,用来产生重复序列。1.1 练习代码在E:\java学习\初级\course156\db_math#演示数学相关函数762--ABS(num)绝对值SELECTABS(-10)FROMDUAL;#......
  • 实现免杀:Shellcode的AES和XOR加密策略(vt查杀率:4/70)
    前言什么是私钥和公钥私钥和公钥是密码学中用于实现加密、解密和数字签名等功能的关键组件。私钥是一种加密算法中的秘密密钥,只有密钥的拥有者可以访问和使用它。私钥通常用于数字签名和数据加密等场景中,它可以用于对数据进行加密,同时也可以用于解密已经被加密的数据。公钥是......
  • 学习:存储加密和传输加密的审计要点
    学习转载:存储加密和传输加密的审计要点存储加密和传输加密的审计要点近年来,随着移动互联网的高速发展,在人们享受网络带来便利的同时,信息安全也逐渐成为大众关注的热点。2021年落地的《中华人民共和国个人信息保护法》中第五十一条中明确提到,对于个人信息处理者的义务:采取相应......
  • 【密码学】为什么不推荐在对称加密中使用CBC工作模式
    引言这篇文章是我在公司内部分享中一部分内容的详细版本,如标题所言,我会通过文字、代码示例、带你完整的搞懂为什么我们不建议你使用cbc加密模式,用了会导致什么安全问题,即使一定要用需要注意哪些方面的内容。注:本文仅从安全角度出发,未考虑性能与兼容性等因素工作模式是个啥分......
  • druid 数据库密码加密
    cmd命令:1、切换的druid-0.2.9.jar包所在目录2、在命令行中执行如下命令:java-cpdruid-0.2.9.jarcom.alibaba.druid.filter.config.ConfigToolsyou_password即输出加密后密码3、<!--sql统计功能就不能用<propertyname="filters"value="stat"/>--><propertyname="......
  • 接口加密了该怎么测?接口中有数据要进行加密怎么做??
    对明文编码生成信息摘要,以防止被篡改。比如MD5使用的是Hash算法,无论多长的输入,MD5都会输出长度为128bits的一个串。摘要算法不要秘钥,客户端和服务端采用相同的摘要算法即可针对同一段明文获取一致的密文。对称加密对称加密算法是共享密钥加密算法,在加密解密过程中,使用的密钥只......
  • AKSK加密认证
    AK/SK加密认证AK/SK概述1.什么是AKSKak/sk是一种身份认证方式,常用于系统间接口调用时的身份验证,其中ak为AccessKeyID,sk为SecretAccessKey。客户端和服务端两者会协商保存一份相同的sk,其中sk必须保密。2.AK/SK认证过程客户端在调用的服务端接口时候,会带上ak以及signatu......
  • RSA之低加密指数广播攻击------2023.5.22
    使用条件:模数n,密文C不同,明文m,加密指数e相同。(一般的话e=k,k是题目给出的n和c的组数)例如:e=k=3同余式组:C1≡m^emodn1C2≡m^emodn2C3≡m^emodn3由中国剩余定理:设n1,n2,n3是两两互素的正整数,M=n1∗n2∗n3Mi=M/ni (i=1,2,3)则同余式组: m^e≡Ci mod ni  (i=1,2,3)有唯一解......
  • iOS AES 256加密
    #import<Foundation/Foundation.h>@classNSString;@interfaceNSData(Encryption)-(NSData*)AES256EncryptWithKey:(NSString*)key;//加密-(NSData*)AES256DecryptWithKey:(NSString*)key;//解密@end#import"NSData+AES.h"#import&......
  • 关于MySQL数据库的加密解密问题
    SELECTMD5(‘123456’);结果显示的密文即为:e10adc3949ba59abbe56e057f20f883e解密MySQL中的MD5加密密码,需要使用MySQL中的UNHEX()函数。UNHEX()函数可以接收一个十六进制格式的参数,将其转换为原始字符串格式。例如我们可以这样使用UNHEX()函数解密前面我们生成的初始密文:SELEC......