gpt4 book ai didi

c++ - 生成随 secret 钥

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:26 28 4
gpt4 key购买 nike

我的任务是生成随机的 80 字节 key ,我决定遵循以下策略

在我的电脑中sizeof(char)=1 所以我创建了一个英文字母数组

char *p=" ";
char a[0..26] and in cycle


for (int i=0;i<=80;i++){
*(p+i)+= a[(rand()+100) % 26];
}

但是它不起作用它会停止执行如果我的代码很愚蠢但我现在不能想别的请帮忙抱歉谢谢代码

#include <iostream>
#include <string.h>
#include <cstdlib>
using namespace std;
int main(){

char *p=" ";
char a[]= { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for (int i=0;i<=80;i++){
*(p+i)+=(a[(rand()+100)%26]);
}

cout<<p<<endl;


return 0;

}

最佳答案

好吧,通常我会说您需要提供比“它停止执行”更多的信息,但我突然想到了一些事情:

    char *p=" ";
char a[]= { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for (int i=0;i<=80;i++){
*(p+i)+=(a[(rand()+100)%26]);
}

您的循环正在将值写入 *p 从索引 0 到 80(总共 81 个元素)。

第一次迭代迭代:

*(p+0) = a[...]; 

可以,但是第二个

*(p+1) = a[...];

应该会失败,因为在地址 *(p+1) 处没有预留内存。如果您可以写入为附加到字符串文字的空 \0 保留的空间,则这可能会减少一个。

当你声明 *p 为

char *p=" ";

您只分配了 1 个字节。因此,当您的循环写入 p[1]、p[2]... 时,您正在尝试写入未分配的内存。将您的声明更改为类似

char pArr[81];
char *p=pArr;

然后从那里开始。

关于c++ - 生成随 secret 钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3591226/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com