Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用C对文本进行加密和解密?

如何使用C对文本进行加密和解密?
EN

Stack Overflow用户
提问于 2012-12-01 11:40:53
回答 2查看 3K关注 0票数 2

我尝试编写简单的应用程序来获取字符串并对其进行加密。在我想通过解密算法得到之前的字符串之后。

AES加密/解密将是非常好的

这看起来很基本,但大多数示例都是用其他语言编写的,而不是C。我找不到任何合适的示例来做到这一点。请帮帮忙。

任何和所有的建议都将非常感谢。:-)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-01 12:07:21

您将需要以下库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   libc.lib
  euser.lib
  libcrypto.lib

此外,您还需要从http://www.developer.nokia.com/info/sw.nokia.com/id/91d89929-fb8c-4d66-bea0-227e42df9053/Open_C_SDK_Plug-In.html安装openC插件

以下是带有解释注释的源代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stddef.h>
#include <openssl/rc4.h>
#include <openssl/md5.h>

//#include<filelogger.h>

void openc_encrypt(int len, unsigned char* in, unsigned char* crypted, unsigned char* password, int passlen)
{
   unsigned char digest[MD5_DIGEST_LENGTH];
   RC4_KEY key;

   MD5(password, passlen, digest);

   RC4_set_key(&key, MD5_DIGEST_LENGTH, digest);
   RC4(&key, len, in, crypted);
}

void openc_decrypt(int len, unsigned char* in, unsigned char* decrypted, unsigned char* password, int passlen)
{
   unsigned char digest[MD5_DIGEST_LENGTH];
   RC4_KEY key;

   MD5(password, passlen, digest);

   RC4_set_key(&key, MD5_DIGEST_LENGTH, digest);
   RC4(&key, len, in, decrypted);
}

/////////////////////////////////////////////////////////////////////////////////////

const TInt KMaxTextLen = 100;

_LIT8(KExampleText, "Encrypt this text!");
_LIT8(KPassWord, "secret");

void doExampleL()
    {    
    TBuf8<KMaxTextLen> buffer(KExampleText);

    HBufC8* password = KPassWord().AllocLC();    
    HBufC8* crypted = HBufC8::NewLC(buffer.Size());

    TPtr8 cryptedPtr = crypted->Des();
    cryptedPtr.SetLength(buffer.Size());

    openc_encrypt(buffer.Size(),
              (unsigned char*)buffer.Ptr(),
              (unsigned char*)cryptedPtr.Ptr(),
              (unsigned char*)password->Ptr(),
              password->Size()); 

  //LOGDES16(buffer); //Encrypt this text!
  //LOGDES8(*crypted) ; //Ór›­Â Û¦  }ÖŠ4 b q 

    HBufC8* decrypted = HBufC8::NewLC(buffer.Size());
    TPtr8 decryptedPtr = decrypted->Des();

    buffer.Copy(cryptedPtr);
    decryptedPtr.SetLength(buffer.Size());

    openc_decrypt(buffer.Size(),         
                (unsigned char*)buffer.Ptr(),
                (unsigned char*)decryptedPtr.Ptr(),
                (unsigned char*)password->Ptr(),
                password->Size());

  //LOGDES16(buffer);       //Ór›­Â Û¦  }ÖŠ4 b q 
  //LOGDES8(*decrypted) ; //Encrypt this text!

    CleanupStack::PopAndDestroy(3);  //decrypted, crypted, password                   
}

本例中的文本使用密码短语加密,之后使用示例函数openc_encrypt()和openc_decrypt()使用相同的密码短语解密。

编辑

AES加密

(致谢:abhi)

对于AES加密,请参考此示例:http://saju.net.in/code/misc/openssl_aes.c.txt

代码很详细,有注释,如果你还需要更多关于API本身的解释,我建议你看看Viega/Messier/Chandra写的这本书: Network Security with OpenSSL (谷歌一下,你很容易就能找到它的pdf格式)。请阅读第6章,该章专门介绍使用EVP API的对称密码。这帮助我真正理解了使用EVP的各种功能和结构背后的原因。

如果你想深入研究Openssl加密库,我建议你从openssl网站(安装在你机器上的版本)下载代码,然后看看EVP和api实现的实现。

票数 2
EN

Stack Overflow用户

发布于 2012-12-01 12:06:24

Rot-13开始,从there开始逐步发展;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13659079

复制
相关文章
C#对字符串进行加密解密
明志德道
2023/10/21
3870
C#对字符串进行加密解密
如何使用Java进行加密和解密
在Java中,我们可以使用许多不同的加密和解密技术来保护数据。这些技术可以用于加密密码、保护敏感数据、网络通信等。下面将介绍Java中常用的加密和解密技术和实现方法。
用户1289394
2023/09/22
6690
如何使用Java进行加密和解密
使用PBE方式进行加密,解密
package com.demo.pbe; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKeyFactory; import javax.c
用户1215919
2018/02/09
2.7K0
PHP使用DES进行加密和解密
DES是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科:
大江小浪
2018/07/25
2K1
PHP使用DES进行加密和解密
DES是一种标准的数据加密算法,关于这个算法的详细介绍可以参考wiki和百度百科: wiki百科 百度百科 php中有一个扩展可以支持DES的加密算法,是:extension=php_mcrypt.dll 在配置文件中将这个扩展打开还不能够在windows环境下使用 需要将PHP文件夹下的 libmcrypt.dll 拷贝到系统的 system32 目录下,这是通过phpinfo可以查看到mcrypt表示这个模块可以正常试用了。  下面是PHP中使用DES加密解密的一个例子: 1 //$input - s
joshua317
2018/04/16
1.2K0
如何使用DotfuscatorPro_4.9对软件进行加密
DotfuscatorPro_4.9可以防止你的.NET软件被反编译,可以在一定程度上防止你的软件被反编译。现在很多软件都有被反编译的现象,虽然不能做到百分百的防范,但是你至少可以先做些技术上的处理,至少能挡住许多小白。
战神伽罗
2019/07/24
1.5K0
如何使用DotfuscatorPro_4.9对软件进行加密
使用hutool的非对称加密工具进行加密解密
RSA是最流行的非对称加密算法之一。也被称为公钥加密。它是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
JQ实验室
2023/01/13
4.8K0
使用crypto.js进行信息加密解密
<script type="text/javascript" src="./crypto-js.js"></script> <script type="text/javascript"> var password = 'password' // 待加密字段 var secretKey = 'fizz' // key console.log(`待加密字段: ${password}`) var aestext = CryptoJS.AES.encrypt(password,secretKey) co
拿我格子衫来
2022/01/24
4.7K0
使用crypto.js进行信息加密解密
JAVA对字符串内容进行AES、DES加密解密
有时候java项目中需要对我们传输的内容进行加密,以确保数据的安全性,所以用到了其中的AES加密解密,不多说,直接上代码,看AES如何对字符串进行加密解密的:
一诺千金
2020/06/24
3.7K0
JAVA对字符串内容进行AES、DES加密解密
C语言如何实现DES加密与解密
在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码。废了半天劲,终于找到了问题所在。
芯动大师
2023/10/14
5392
C语言如何实现DES加密与解密
C# AES 加密 解密
// 输入代码内容 /// <summary> /// Aes加密解密 /// @author lishuai /// @date 20220527 13:01 /// </summary> public class AesUtil { /// <summary> /// AES加密 (128-ECB加密模式) /// </summary> /// <param name="toEncrypt
BrianLee
2022/05/27
2.8K0
C# AES 加密 解密
使用jmeter对字符串进行加密
这次仍然使用百度通用翻译接口当做案例,因为它刚好有一个参数就是经过md5加密得来的
冰霜
2022/03/19
1.3K0
使用jmeter对字符串进行加密
实用脚本!利用 Python 对 PDF 进行加密、解密操作,代码拿走就用!
本文将分享如何利用 Python 对 PDF 进行加密和解密操作,主要利用到之前多次介绍过的PyPDF2 模块。
崔庆才
2021/06/24
2.8K0
实用脚本!利用 Python 对 PDF 进行加密、解密操作,代码拿走就用!
nodejs使用aes-128-ecb加密如何在c#中解密
却发现C#端怎么也解密不了,一直报错,改了一整天,后来终于发现,nodejs端加密用的key其实在使用之前已经使用md5加密了一次,而这个操作是默认的,暂时没发现有配置可以默认去掉,服务端如果需要使用这个key解密,则需要也同样使用MD5加密
frontoldman
2019/09/03
2.6K0
【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )
多行文本读取 : 通过 feop 函数判定是否读取到了文件结尾 , 如果已经读取到了文件结尾 , 则返回 true ;
韩曙亮
2023/03/29
1.4K0
【C 语言】文件操作 ( 读文本文件 | 文本加密解密 | fgets 函数 | fputs 函数 )
C#加密解密(AES)-AESHelper
using System; namespace Encrypt { public class AESHelper { /// <summary> /// 默认密钥-密钥的长度必须是32 /// </summary> private const string PublicKey = "1234567890123456"; /// <summary> /// 默认向量 /// </
KenTalk
2018/09/11
9.1K0
【C 语言】文件操作 ( 文件加密解密 | 解密文件 )
个文件 , 一个是原始文件 , 一个是加密后的文件 , 将原始文件进行加密 , 然后将加密后的数据输出到加密文件中 ;
韩曙亮
2023/03/30
9.5K0
[Spring Boot] 如何优雅的对配置文件进行加密
Jasypt Spring Boot为Spring Boot Applications中的属性源提供加密支持。 有三种方法可以集成jasypt-spring-boot到您的项目中:
架构探险之道
2019/08/06
8.3K0
使用luks2对ceph rbd进行加密
多个行业(例如金融行业)越来越需要在主机上使用租户/用户提供的加密密钥以卷粒度加密数据。这是由国家法规和对安全性的日益重视所推动的。迄今为止,Ceph RBD 不提供任何此类解决方案,现有的替代方案是在 libRBD 之前添加一个加密层。此类解决方案的示例是使用 QEMU LUKS 加密或依赖 DM-Crypt。但是,在与 RBD 层中实现的存储功能接口时,使用 RBD 之上的加密层有局限性。当我们进行镜像克隆时,只有在父子节点使用相同的加密密钥加密时才会起作用。通过将加密向下移动到 libRBD,就可以灵活地使用 Ceph RBD 克隆了。
没有故事的陈师傅
2022/09/15
9420
使用luks2对ceph rbd进行加密
点击加载更多

相似问题

使用异或对textArea文本进行加密/解密

20

如何对短信进行加密解密?

40

使用objective-c对密码进行加密和解密

51

使用Forge对AES进行加密/解密

11

使用现有密钥对加密/解密文本

210
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文