字符串加解密_字符串加密解密 - CSDN
精华内容
参与话题
  • 字符串加解密 算法

    千次阅读 2016-07-25 22:31:37
    1、对输入的字符串进行加解密,并输出。 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; 当内容是数字时则把该数字加1,如0替换1,1...
    /* 题目描述
    1、对输入的字符串进行加解密,并输出。
    2加密方法为:
    当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
    当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
    其他字符不做变化。
    3、解密方法为加密的逆过程。
     */
    
    #include <stdio.h>
    #include <string.h>
    
    void Encrypt (char aucPassword[], char aucResult[]);
    void unEncrypt (char result[], char password[]);
    
    int main()
    {
    	char input_str_need[100] = "";
    	char input_str_no[100] = "";
    	char out_need[100] = "";
    	char out_no[100]= "";
    	int n;
    	fgets(input_str_need, 100,stdin);
    	fgets(input_str_no, 100,stdin);
    	input_str_need[strlen(input_str_need)-1]='\0';
    	input_str_no[strlen(input_str_no)-1]='\0';
    	
    	Encrypt (input_str_need, out_need);
    	n = unEncrypt (input_str_no, out_no);
    	
    	printf("%s\n",out_need);
    	printf("%s\n",out_no);
    	//puts(out_need);
    	//puts(out_no);
    	
    	return 0;
    	
    }
    
    //在该函数中实现字符串加密并输出
    // 1、字符串以\0结尾。
    // 2、字符串最长100个字符。
    void Encrypt (char aucPassword[], char aucResult[])
    {
    	char *pwd = aucPassword;
    	char *res = aucResult;
    	
    	while(*pwd != '\0')
    	{
    		if(*pwd >= '0' && *pwd <= '8')
    		{
    			if(*pwd == '9')
    			{
    				*res = '0';
    			}else
    			{
    				*res = *pwd + 1;
    			}
    		}
    		else if(*pwd >= 'a' && *pwd <= 'z')
    		{
    			if(*pwd >= 'a' && *pwd <= 'y')
    			{
    				*res = *pwd - ('a' - 'A') + 1;
    			}else
    			{
    				*res = 'A';
    			}
    			
    		}
    		else if(*pwd >= 'A' && *pwd <= 'Z')
    		{
    			if(*pwd >= 'A' && *pwd <= 'Y')
    			{
    				*res = *pwd - ('a' - 'A') + 1;
    			}else
    			{
    				*res = 'a';
    			}
    		}
    		else
    		{
    			*res = *pwd;
    		}
    		pwd++;
    		res++;
    	}
    	//*res = '\0';
    }
    
    //在该函数中实现字符串解密并输出
    int unEncrypt (char result[], char password[])
    {
    	char *pwd = password;
    	char *res = result;
    	
    	while(*res != '\0')
    	{
    		if(*res >= '0' && *res <= '9')
    		{
    			if(*res == 0)
    			{
    				*pwd = '9';
    			}
    			else
    			{
    				*pwd = *res - 1;
    			}		
    		}
    		else if(*res >= 'a' && *res <= 'z')
    		{
    			if(*res >= 'b' && *res <= 'z')
    			{
    				*pwd = *res - ('a' - 'A') - 1;
    			}else
    			{
    				*pwd = 'Z';
    			}
    			
    		}
    		else if(*res >= 'A' && *res <= 'Z')
    		{
    			if(*res >= 'B' && *res <= 'Z')
    			{
    				*pwd = *res + ('a' - 'A') - 1;
    			}else
    			{
    				*pwd = 'z';
    			}
    		}
    		else
    		{
    			*pwd = *res;
    		}
    		pwd++;
    		res++;
    	}
    	return 0;
    	//*pwd = '\0';
    }
    

    展开全文
  • 字符串加密解密

    千次阅读 2016-02-25 14:24:07
    /* 1、对输入的字符串进行加解密,并输出。 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; 当内容是数字时则把该数字加1,如0...
    /************************************************************************/
    /* 1、对输入的字符串进行加解密,并输出。
    2加密方法为:
    当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
    当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
    其他字符不做变化。
    3、解密方法为加密的逆过程。


    接口描述:
    实现接口,每个接口实现1个基本操作:
    void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出
    说明:
    1、字符串以\0结尾。
    2、字符串最长100个字符。


    int unEncrypt (char result[], char password[]):在该函数中实现字符串解密并输出
    说明:
    1、字符串以\0结尾。
    2、字符串最长100个字符。


    输入:输入一串要加密的密码
    输入一串加过密的密码
    输出:输出加密后的字符
    输出解密后的字符


    例 输入 abcdefg BCDEFGH ****&&&
    输出 BCDEFGH abcdefg ****&&&                                                                     */

    /************************************************************************/


    #include <iostream>
    #include <string>
    using namespace std;
    /************************************************************************/
    /* 加密函数                                                                     */
    /************************************************************************/
    string Encrypt(string data){
    	string encrypted(data);
    	char temp;
    	for (int i = 0; i < data.size();++i)
    	{
    		if (data[i] >= 'a'&&data[i] <= 'z')
    			temp = data[i] - 32;
    		else if (data[i] >= 'A'&&data[i] <= 'Z')//大Z变成小z,实际应该变成小a
    			temp = data[i] + 32;
    		else if (data[i]>='0'&&data[i]<='9')
    		{
    			temp = data[i];  //等于本身
    		}
    		else{               //别的符号,先减1,因为后面统一加1
    			temp = data[i] - 1;
    		}
    		switch (temp) //特殊情况,特殊处理
    		{
    		case '9':
    			encrypted[i] = '0';
    			break;
    		case 'z': 
    			encrypted[i] = 'a';
    			break;
    		case 'Z':
    			encrypted[i] = 'A';
    			break;
    		default:
    			encrypted[i] = temp + 1; //别的都加1
    			break;
    		}
    	}
    	return encrypted;
    }
    /************************************************************************/
    /* 解密函数                                                                     */
    /************************************************************************/
    string unEncrypt(string data){
    	string encrypted(data);
    	char temp;
    	for (int i = 0; i < data.size(); ++i)
    	{
    		if (data[i] >= 'a'&&data[i] <= 'z')
    			temp = data[i] - 32;
    		else if (data[i] >= 'A'&&data[i] <= 'Z')//大Z变成小z,实际应该变成小a
    			temp = data[i] + 32;
    		else if (data[i] >= '0'&&data[i] <= '9')
    		{
    			temp = data[i]; //等于本身
    		}
    		else{              //别的符号
    			temp = data[i] + 1;
    		}
    		switch (temp) //特殊情况,特殊处理
    		{
    		case '0':
    			encrypted[i] = '9';
    			break;
    		case 'a':
    			encrypted[i] = 'z';
    			break;
    		case 'A':
    			encrypted[i] = 'Z';
    			break;
    		default:
    			encrypted[i] = temp -1;
    			break;
    		}
    	}
    	return encrypted;
    }
    
    int main(){
    	string input;//使用string类
    	string encrypt;
    	string unencrypt;
    	cout << "输入需要加密的字符串:" << endl;
    	while (getline(cin,input))
    	{
    		cout << "输出加密后的字符串:" << endl;
    		encrypt = Encrypt(input);
    		cout << encrypt << endl;
    		
    		cout << "输出解密后的字符串:" << endl;
    		unencrypt = unEncrypt(encrypt);
    		cout << unencrypt << endl<<endl;
    		cout << "输入需要加密的字符串:" << endl;
    	}
    	return 0;
    }


    展开全文
  • 1、对输入的字符串进行加解密,并输出。 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; 当内容是数字时则把该数字加1,如0替换1...

    题目描述:

    1、对输入的字符串进行加解密,并输出。

    2加密方法为:

    当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;

    当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;

    其他字符不做变化。

    3、解密方法为加密的逆过程。

    输入:

    输入一串要加密的密码
    输入一串加过密的密码

    abcdefg
    BCDEFGH
    

    输出:

    输出加密后的字符
    输出解密后的字符

    BCDEFGH
    abcdefg
    

    做题思路:

    思路1. 按照转换规则对每个字符进行转换,比如加密过程:

    char c = str[i];
    if( str[i]>='a'&&str[i]<'z' ){
        c = str[i]-31;
    }
    if( str[i]=='z' ){
        c = 'A';
    }
    if( str[i]>='A'&&str[i]<'Z' ){
        c = str[i]+33;
    }
    if( str[i]=='Z' ){
        c = 'a';
    }
    if( str[i]>='0'&&str[i]<'9' ){
        c = str[i]+1;
    }
    if( str[i]=='9' ){
        c = '0';
    }

    思路2. 把转换后和转换好的表先对应准备好

    const string helper1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    const string helper2 = "BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza1234567890";

    AC代码:

    #include<iostream>
    #include<string>
    using namespace std;
    
    void Encrypt(string str); //对字符串进行加密 
    void unEncrypt(string str); //对字符串进行解密 
    
    int main()
    {
    	string str1,str2;
    	
    	while( cin>>str1>>str2 ){
    		Encrypt(str1);
    		unEncrypt(str2);
    	}
    	
    	return 0;
    }
    void Encrypt(string str)
    {
    	string password; //加密后的字符串
    	
    	for(int i=0; i<str.size(); i++){
    		char c = str[i];
    		if( str[i]>='a'&&str[i]<'z' ){
    			c = str[i]-31;
    		}
    		if( str[i]=='z' ){
    			c = 'A';
    		}
    		if( str[i]>='A'&&str[i]<'Z' ){
    			c = str[i]+33;
    		}
    		if( str[i]=='Z' ){
    			c = 'a';
    		}
    		if( str[i]>='0'&&str[i]<'9' ){
    			c = str[i]+1;
    		}
    		if( str[i]=='9' ){
    			c = '0';
    		}
    		password.push_back(c);
    	} 
    	
    	cout<<password<<endl;
    }
    void unEncrypt(string str)
    {
    	string initial; //解密后的字符串
    	
    	for(int i=0; i<str.size(); i++){
    		char c = str[i];
    		if( str[i]>'a'&&str[i]<='z' ){
    			c = str[i]-33;
    		}
    		if( str[i]=='a' ){
    			c = 'Z';
    		}
    		if( str[i]>'A'&&str[i]<='Z' ){
    			c = str[i]+31;
    		}
    		if( str[i]=='A' ){
    			c = 'z';
    		}
    		if( str[i]>'0'&&str[i]<='9' ){
    			c = str[i]-1;
    		}
    		if( str[i]=='0' ){
    			c = '9';
    		}
    		initial.push_back(c);
    	} 
    	
    	cout<<initial<<endl;
    }

     

    展开全文
  • 字符串加解密

    千次阅读 2014-03-01 20:24:10
    1、 对输入的字符串进行加解密,并输出。 2、 加密方法为:当内容是英文字母时,则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换...
    描述:
    1、 对输入的字符串进行加解密,并输出。
    2、 加密方法为:当内容是英文字母时,则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。
    3、 解密方法为加密的逆过程。

    分析:
    遍历输入字符串,对字符分类讨论,重点是字母的大小写转换,大写转小写加上32,反之减去32,也可以运用 'a'-'A' 或 ‘A’-'a' 进行转换。

    代码如下:
    int Encrypt (char password[], char result[])
    {
    if (password == NULL)
    {
    return 0;
    }
    int i = 0;
    for (i=0;i<strlen(password);i++)
    {
    if (password[i]>='A' && password[i] <= 'Z')
    {
    if (password[i] == 'Z')
    {
    result[i] = 'a';
    }
    else
    {
    result[i] = 32+1+password[i];//result[i] = 'a'-'A'+1+password[i]
    }
    }
    else if (password[i]>='a' && password[i]<='z')
    {
    if (password[i] == 'z')
    {
    result[i] = 'A';
    }
    else
    {
    result[i] = -32+1+password[i];//result[i] = 'A'-'a'+1+password[i];
    }
    }
    else if (password[i]>='0' && password[i] <= '9')
    {
    if (password[i] == '9')
    {
    result[i] = '0';
    }
    else
    {
    result[i] = password[i]+1;
    }
    }
    else
    {
    result[i] = password[i];
    }
    }
    result[i] = '\0';
    return 0;
    }


    int unEncrypt (char result[], char password[])
    {
    if (result == NULL)
    {
    return 0;
    }
    int i = 0;
    for (i=0; i<strlen(result);i++)
    {
    if (result[i]>='A' && result[i]<='Z')
    {
    if (result[i] == 'A')
    {
    password[i] = 'z';
    }
    else
    {
    password[i] = 32-1+result[i];//password[i] = 'a'-'A'-1+result[i]; 
    }
    }
    else if (result[i]>='a' && result[i]<='z')
    {
    if (result[i] == 'a')
    {
    password[i] = 'Z';
    }
    else
    {
    password[i] = -32-1+result[i];//password[i] = 'A'-'a'-1+result[i];
    }
    }
    else if (result[i]>='0' && result[i]<='9')
    {
    if (result[i] == '0')
    {
    password[i] = '9';
    }
    else
    {
    password[i] = result[i] - 1;
    }
    }
    else 
    {
    password[i] = result[i];
    }
    }
    password[i] = '\0';
    return 0;
    }
    展开全文
  • 字符串简单加密解密

    千次阅读 2019-04-11 12:32:32
    #include<stdio.h> #include<stdlib.h> #include<string.h>...void Get_String(char* ... printf("请输入要加解密字符串:\n"); scanf("%s",str); printf("输入成功!\n"); system("pause")...
  • 字符串加密解密工具

    千次阅读 2017-09-27 13:13:06
    在写代码中,经常会用到字符串的加密、解密,尤其是用户密码,不能直接出现在代码或者配置中,最好用加密方法进行加密,下面提供一个加密解密工具。 package com.zheng.common.util; import sun.misc.BASE64Decoder...
  • js对字符串进行加密和解密

    万次阅读 2016-11-28 13:13:53
    function compileStr(code){ //对字符串进行加密 var c=String.fromCharCode(code.charCodeAt(0)+code.length);  for(var i=1;i;i++) { c+=String.fromCharCode(code.charCodeAt(i)+cod
  • C++对字符串的小小加密与解密

    万次阅读 2016-08-11 15:04:28
    将输入的一行字符串以加密的形式输出,然后将其解密解密的字符序列与输入的正文比较,吻合时输出解密的正文,否则解密失败 加密时,将每个字符的ASCII码依次反复加上“4962873”中的数字,并在32(‘’)~122(‘z...
  • shell几种字符串加密解密的方法

    万次阅读 2015-07-22 12:45:26
    第一种:〔 Python 与 Bash Shell 的结合 ...这个命令会让你输入一个字符串,然后会再输出一串加密了的数字。 加密代码[照直输入]: python -c 'print reduce(lambda a,b: a*256+ord(b), raw_in
  • Android - 字符串的加密和解密

    千次阅读 2018-06-13 10:17:33
    Android - 字符串的加密和解密
  • Java字符串的加密解密

    千次阅读 2019-07-03 20:09:54
    为了保证程序的安全,经常采用数据加密的方法。Java 中提供了专门用于加密运算的类和接口。...解密时再将加密字符串进行相反的运算,这样即可得到原字符串。 本实例简单介绍如何通过数据运算实现字符串的...
  • QT对字符串简单解密

    千次阅读 2018-08-31 16:49:27
    使用按位异或^进行解密解密都是使用该函数: void EncryptionStr(QByteArray &amp;data) { static QByteArray key = "MY_KEY"; for (int i = 0; i &lt; data.size(); i++) { ...
  • [C/C++]基础字符串的加密解密算法

    千次阅读 2017-05-22 17:39:41
    要求:对任意长度的英文字符串进行加密,加密规则为:对于每一个字母用字母表中该字母后面的第2个字母代替。 PS:大一下学期有过类似的题目,当时写的超级啰嗦,今天写了一个超简单的代码。 直接上代码: #...
  • Shell中使用openssl进行字符串加解密

    千次阅读 2018-05-12 21:15:20
    在Linux/Unix中使用openssl进行字符串加解密,AES 256 CBC模式。#!/bin/bash source_str="RealJt" key=$(openssl rand -base64 32 | md5) iv=$(openssl rand -base64 32 | md5) encrypt_str=$(echo &...
  • QT 对QString简单地加密、解密

    千次阅读 2018-05-11 14:32:35
    通过异或操作,对于字符串进行简单地加密,然后可以使用同一个函数进行解密,算法简单,是用于简单地加密解密,不适合严格的项目。void Test::xorData(QByteArray &amp;data) { static QByteArray key1 = "...
  • php自带加密解密函数

    万次阅读 2011-11-01 09:57:58
    不可逆的加密函数为:md5()、crypt() md5() 用来计算 MD5 哈稀。...欲比对字符串,将已加密的字符串的头二个字符放在 salt 的参数中,再比对加密后的字符串。语法为:string crypt(string str, strin
  • HTML、JS、字符串的简单加密与解密

    千次阅读 2018-03-13 10:50:19
    用escape与unescape进行编码与解码字符串,例如“你好”加密后变为“%u4F60%u597D”,看不懂吧,如果是加密js的话,运行时可以解密后使用eval函数执行。 缺点:不能加密数字和英文,而且解密方法大家都懂得。 2.自...
  • 加密字符串为:对原有字符加上其在字符串中的位置在偏移值5.int main(){ int result=1; int i; int count=0; char Text[128]={'\0'}; char secretText[128]={'\0'}; while(1){ if(result==1){ printf(&...
  • C#字符串的几种加密解密方法

    万次阅读 2012-07-06 16:10:02
    /// 字符串加密组件 /// public class Encrypt {  #region "定义加密字串变量"  private SymmetricAlgorithm mCSP; //声明对称算法变量  private const string CIV = "Mi9l/+7Zujhy12se6Yjy111A"; //...
  • 此处说的加密和解密是对字符串用MD5加密解密的方式进行加密解密。 MD5是MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),用来进行一致性验证、数字签名、安全访问认证等。一致性验证:作为文件的“数字...
1 2 3 4 5 ... 20
收藏数 85,870
精华内容 34,348
关键字:

字符串加解密