全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 797|回复: 9
打印 上一主题 下一主题

使用chatgpt写一个使用aes加密解密算法的rust代码,死活报错。

[复制链接]
跳转到指定楼层
1#
发表于 2023-11-13 18:26:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
尝试用gpt4.0来写,一样报错。
  1. extern crate aes_gcm;
  2. extern crate generic_array;
  3. extern crate rand;

  4. use aes_gcm::Aes256Gcm;
  5. use aes_gcm::aead::{Aead, generic_array::GenericArray};
  6. use rand::Rng;
  7. use generic_array::typenum::{U12, U32};

  8. // 生成随机的256位密钥
  9. fn generate_aes_key() -> GenericArray<u8, U32> {
  10.     let mut key = [0u8; 32];
  11.     rand::thread_rng().fill(&mut key);
  12.     GenericArray::clone_from_slice(&key)
  13. }

  14. // 生成随机的96位 nonce
  15. fn generate_nonce() -> GenericArray<u8, U12> {
  16.     let mut nonce = [0u8; 12];
  17.     rand::thread_rng().fill(&mut nonce);
  18.     GenericArray::clone_from_slice(&nonce)
  19. }

  20. // AES GCM加密函数
  21. fn aes_gcm_encrypt(key: GenericArray<u8, U32>, nonce: GenericArray<u8, U12>, plaintext: &[u8]) -> Vec<u8> {
  22.     let cipher = Aes256Gcm::from(&key);
  23.     let ciphertext = cipher
  24.         .encrypt(&nonce, plaintext.into())
  25.         .expect("Encryption failure!");
  26.     ciphertext
  27. }

  28. // AES GCM解密函数
  29. fn aes_gcm_decrypt(
  30.     key: GenericArray<u8, U32>,
  31.     nonce: GenericArray<u8, U12>,
  32.     ciphertext: &[u8],
  33. ) -> Option<Vec<u8>> {
  34.     let cipher = Aes256Gcm::from(&key);
  35.     let decrypted_data = cipher.decrypt(&nonce, ciphertext.into()).ok()?;
  36.     Some(decrypted_data)
  37. }

  38. fn main() {
  39.     let key = generate_aes_key();
  40.     let nonce = generate_nonce();
  41.     let plaintext = b"Hello, AES GCM encryption and decryption!";

  42.     let ciphertext = aes_gcm_encrypt(key.clone(), nonce.clone(), plaintext);
  43.     println!("Ciphertext: {:?}", ciphertext);

  44.     let decrypted_data = aes_gcm_decrypt(key, nonce, &ciphertext);
  45.     match decrypted_data {
  46.         Some(data) => {
  47.             let decrypted_text = String::from_utf8_lossy(&data);
  48.             println!("Decrypted Text: {}", decrypted_text);
  49.         }
  50.         None => {
  51.             println!("Decryption failed.");
  52.         }
  53.     }
  54. }
复制代码


给出的代码:来回循环否定自己的代码。比如:一会说A对了,B错了。当我贴出报错代码后,它又说B对了,A错误了,然后我继续贴出报错代码,它又说对不起,A对了,B错误了。来回循环往复。使用gpt4和gpt3.5都是这样。
推荐
发表于 2023-11-13 18:53:13 | 只看该作者
修正大多数情况只会越来越离谱……
你可以试试让它用热门点的语言写然后翻译成rust
3#
发表于 2023-11-13 18:48:38 来自手机 | 只看该作者
gpt写rust问题挺大的,一是rust更新比较快,二是也没那么多语料。
5#
发表于 2023-11-13 19:05:20 | 只看该作者
chatgpt写rust代码很离谱,建议用主流语言比如c或者c++,python或者js也行
6#
发表于 2023-11-14 00:28:26 | 只看该作者
rust本就复杂无比,目前的ai真不行
7#
发表于 2023-11-14 00:40:30 | 只看该作者
chatgpt写rust很多问题,rust太新了,语料太少,而且rust复杂
8#
发表于 2023-11-14 00:56:38 | 只看该作者
确实是这样,写代码经常有错误,然后胡言乱语
9#
发表于 2023-11-14 02:45:29 | 只看该作者
gpt写的rust很罗嗦,问题很多
10#
发表于 2023-11-14 03:20:56 来自手机 | 只看该作者
写点 js 和 python 体验不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-11-3 14:30 , Processed in 0.061519 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表