人工智能初体验,让ChatGPT考试答题

@Ta 2023-02-13 1164点击

【不太愉快的】
微信截图_20230213134121.png(43.21 KB)
4.png(41.45 KB)
【节选聊天记录】
论述题:
6.png(51.81 KB)
名词解释题:
5.png(33.02 KB)
判断题:
2.png(30.64 KB)
【也有回答不上的】
3.png(36.09 KB)

总体感受:非常好,很强!(回答延迟非常高,可能是机场不稳定的原因)
60s新闻

回复列表(95|隐藏机器人聊天)
  • @Ta / 2023-02-13 / /
    感觉官网提供的api和chat.openai.com返回的数据不一样
  • @Ta / 2023-02-13 / /

    @幕后导演,ChatGPT目前没有做为API提供,给的API都是旧版本,GPT-3之类的。

  • @Ta / 2023-02-15 / /

    @老虎会游泳,我昨天让它帮我写前端特效代码,发现它单次回复的字符个数上限2048个字符(它自己说的),虽然可以通过发送“请你继续发送剩余代码”让它继续发送代码,但拼接在一起并不能用。

    请问你有哪些“用ChatGPT写代码”的使用经验分享一下吗?
    60s新闻

  • @Ta / 2023-02-15 / /

    @TabKey9,使用go进行RSA256加密

    使用Go进行RSA256加密,需要进行以下步骤:

    生成密钥对
    首先,你需要生成一个RSA密钥对,包括一个私钥和一个公钥。你可以使用Go内置的crypto/rand和crypto/rsa包来生成密钥对。

    以下是一个生成2048位RSA密钥对的示例代码:

    go
    Copy code
    package main

    import (
    "crypto/rand"
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
    "os"
    )

    func main() {
    bitSize := 2048

    privateKey, err := rsa.GenerateKey(rand.Reader, bitSize)
    if err != nil {
        panic(err)
    }
    
    privateKeyBytes := x509.MarshalPKCS1PrivateKey(privateKey)
    privateKeyPem := pem.EncodeToMemory(&pem.Block{
        Type:  "RSA PRIVATE KEY",
        Bytes: privateKeyBytes,
    })
    err = os.WriteFile("private_key.pem", privateKeyPem, 0644)
    if err != nil {
        panic(err)
    }
    
    publicKeyBytes, err := x509.MarshalPKIXPublicKey(&privateKey.PublicKey)
    if err != nil {
        panic(err)
    }
    publicKeyPem := pem.EncodeToMemory(&pem.Block{
        Type:  "RSA PUBLIC KEY",
        Bytes: publicKeyBytes,
    })
    err = os.WriteFile("public_key.pem", publicKeyPem, 0644)
    if err != nil {
        panic(err)
    }

    }
    这将生成一个名为private_key.pem的私钥文件和一个名为public_key.pem的公钥文件。

    使用私钥进行加密
    接下来,你需要使用私钥对要加密的数据进行签名。

    以下是一个使用Go内置的crypto/rsa包进行加密的示例:

    go
    Copy code
    package main

    import (
    "crypto/rand"
    "crypto/rsa"
    "crypto/sha256"
    "encoding/base64"
    "io/ioutil"
    )

    func main() {
    data := []byte("要加密的数据")

    privateKeyBytes, err := ioutil.ReadFile("private_key.pem")
    if err != nil {
        panic(err)
    }
    privateKey, err := x509.ParsePKCS1PrivateKey(privateKeyBytes)
    if err != nil {
        panic(err)
    }
    
    hashed := sha256.Sum256(data)
    signature, err := rsa.SignPKCS1v15(rand.Reader, privateKey, crypto.SHA256, hashed[:])
    if err != nil {
        panic(err)
    }
    
    fmt.Println(base64.StdEncoding.EncodeToString(signature))

    }
    在这个示例中,data是要加密的数据,privateKeyBytes是从私钥文件中读取的私钥。

    使用sha256.Sum256函数对原始数据进行哈希,使用rsa.SignPKCS1v15函数对哈希结果进行签名,其中第三个参数crypto.SHA256指定了使用SHA256哈希算法进行签名。

    最后,使用base64.StdEncoding.EncodeToString函数将签名结果转换为字符串并输出。

    使用公钥进行验证
    在接收方收到数据后,可以使用公钥来验证签名的有效性。

    以下是一个使用Go内置的crypto/rsa包进行验证的示例:

    java
    Copy code
    package main

    import (
    "crypto/rsa"
    "crypto/sha256"
    "encoding/base64"
    "io/ioutil"
    )





    继续

    继续上面的示例代码:

    go
    Copy code
    func main() {
    data := []byte("要加密的数据")

    publicKeyBytes, err := ioutil.ReadFile("public_key.pem")
    if err != nil {
        panic(err)
    }
    publicKey, err := x509.ParsePKIXPublicKey(publicKeyBytes)
    if err != nil {
        panic(err)
    }
    rsaPublicKey := publicKey.(*rsa.PublicKey)
    
    signatureBase64 := "签名的字符串"
    signature, err := base64.StdEncoding.DecodeString(signatureBase64)
    if err != nil {
        panic(err)
    }
    
    hashed := sha256.Sum256(data)
    err = rsa.VerifyPKCS1v15(rsaPublicKey, crypto.SHA256, hashed[:], signature)
    if err != nil {
        panic(err)
    }
    
    fmt.Println("签名验证成功")

    }
    在这个示例中,publicKeyBytes是从公钥文件中读取的公钥,使用x509.ParsePKIXPublicKey函数将公钥解析为*rsa.PublicKey类型的对象。

    signatureBase64是前面加密步骤中生成的签名字符串,使用base64.StdEncoding.DecodeString函数将其转换为字节数组。

    使用sha256.Sum256函数对原始数据进行哈希,使用rsa.VerifyPKCS1v15函数对哈希结果和签名进行验证,其中第二个参数crypto.SHA256指定了使用SHA256哈希算法进行验证。

    如果验证通过,则输出"签名验证成功",否则会抛出错误。




    

    ChatGPT Feb 13 Version. Free Research Preview. Our goal is to make AI systems more natural and safe to interact with. Your feedback will help us improve.PHP怎么使用 SHA256withRSA进行加密

    使用SHA256withRSA进行加密,需要进行以下步骤:

    准备密钥对
    首先,你需要生成一个RSA密钥对,包括一个私钥和一个公钥。你可以使用openssl库来生成密钥对。

    以下是一个生成2048位RSA密钥对的示例命令:

    csharp
    Copy code
    openssl genrsa -out private_key.pem 2048
    openssl rsa -in private_key.pem -outform PEM -pubout -out public_key.pem
    这将生成一个名为private_key.pem的私钥文件和一个名为public_key.pem的公钥文件。

    使用私钥进行加密
    接下来,你需要使用私钥对要加密的数据进行签名。

    以下是一个使用PHP内置的OpenSSL函数进行加密的示例:

    bash
    Copy code
    $data = '要加密的数据';
    $private_key = openssl_get_privatekey(file_get_contents('private_key.pem'));

    openssl_sign($data, $signature, $private_key, OPENSSL_ALGO_SHA256);

    echo base64_encode($signature);
    在这个示例中,$data是要加密的数据,$private_key是从私钥文件中加载的私钥。

    openssl_sign函数接受要签名的数据、一个签名结果的变量和一个私钥。OPENSSL_ALGO_SHA256指定了使用SHA256哈希算法进行签名。

    最后,我们使用base64_encode函数将签名结果转换为字符串并输出。

    使用公钥进行验证
    在接收方收到数据后,可以使用公钥来验证签名的有效性。

    以下是一个使用PHP内置的OpenSSL函数进行验证的示例:

    php
    Copy code
    $data = '要加密的数据';
    $signature = base64_decode('签名结果字符串');
    $public_key = openssl_get_publickey(file_get_contents('public_key.pem'));

    $valid = openssl_verify($data, $signature, $public_key, OPENSSL_ALGO_SHA256);

    if ($valid == 1) {
    echo '签名验证通过';
    } elseif ($valid == 0) {
    echo '签名验证失败';
    } else {
    echo '签名验证出错';
    }
    在这个示例中,$data是原始数据,$signature是从发送方收到的签名结果,$public_key是从公钥文件中加载的公钥。

    openssl_verify函数接受原始数据、签名结果、公钥和哈希算法。如果签名验证通过,它将返回1,如果签名验证失败,它将返回0,如果出现错误,它将返回-1。

    以上就是使用PHP进行SHA256withRSA加密和验证的基本步骤。
    一加8Pro

  • @Ta / 2023-02-15 / /

    @TabKey9,给出你的问题,我试一下。

  • @Ta / 2023-02-15 / /
    @老虎会游泳,用html、css、js写个烟花爆炸效果的页面!
  • @Ta / 2023-02-15 / /

    @TabKey9
    图片.png(13.43 KB)
    图片.png(23.64 KB)

    <!DOCTYPE html>
    <html>
    <head>
    	<title>烟花爆炸效果</title>
    	<style>
    		#firework-container {
    			position: relative;
    			width: 100%;
    			height: 100%;
    			background-color: black;
    			overflow: hidden;
    		}
    		#firework {
    			position: absolute;
    			width: 10px;
    			height: 10px;
    			border-radius: 50%;
    			background-color: white;
    			animation: explode 1s ease-out;
    		}
    		@keyframes explode {
    			from {
    				transform: scale(0);
    			}
    			to {
    				transform: scale(20);
    				opacity: 0;
    			}
    		}
    	</style>
    </head>
    <body>
    	<div id="firework-container"></div>
    
    	<script>
    		function createFirework() {
    			// 创建烟花元素
    			const firework = document.createElement("div");
    			firework.id = "firework";
    
    			// 设置烟花随机位置
    			const x = Math.random() * window.innerWidth;
    			const y = Math.random() * window.innerHeight;
    			firework.style.left = x + "px";
    			firework.style.top = y + "px";
    
    			// 将烟花添加到页面中
    			const fireworkContainer = document.getElementById("firework-container");
    			fireworkContainer.appendChild(firework);
    
    			// 在 1s 后删除烟花元素
    			setTimeout(() => {
    				firework.remove();
    			}, 1000);
    		}
    
    		// 每隔 500ms 创建一个烟花
    		setInterval(createFirework, 500);
    	</script>
    </body>
    </html>
    

    图片.png(21.17 KB)
    图片.png(102.9 KB)

    HTML:

    <!DOCTYPE html>
    <html>
    <head>
      <style>
        #fireworks {
          position: absolute;
          top: 0;
          left: 0;
          width: 100%;
          height: 100%;
          overflow: hidden;
        }
    
        .firework {
          position: absolute;
          top: 50%;
          left: 50%;
          width: 1px;
          height: 1px;
          background-color: red;
          border-radius: 50%;
          transform: translate(-50%, -50%);
        }
      </style>
    </head>
    <body>
      <div id="fireworks"></div>
      <script src="fireworks.js"></script>
    </body>
    </html>
    

    CSS:

    #fireworks {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      overflow: hidden;
    }
    
    .firework {
      position: absolute;
      top: 50%;
      left: 50%;
      width: 1px;
      height: 1px;
      background-color: red;
      border-radius: 50%;
      transform: translate(-50%, -50%);
    }
    

    JavaScript:

    const fireworks = document.getElementById('fireworks');
    
    function createFirework() {
      const firework = document.createElement('div');
      firework.className = 'firework';
      fireworks.appendChild(firework);
    
      setTimeout(() => {
        firework.style.width = '5px';
        firework.style.height = '5px';
        firework.style.backgroundColor = 'yellow';
      }, 0);
    
      setTimeout(() => {
        firework.style.width = '10px';
        firework.style.height = '10px';
        firework.style.backgroundColor = 'white';
      }, 500);
    
      setTimeout(() => {
        firework.style.width = '20px';
        firework.style.height = '20px';
        firework.style.backgroundColor = 'red';
        firework.style.opacity = 0;
      }, 1000);
    
      setTimeout(() => {
        fireworks.removeChild(firework);
      }, 1500);
    }
    
    setInterval(createFirework, 2000);
    
  • @Ta / 2023-02-15 / /

    @TabKey9,如果用审查元素看一下,就能发现第一个几乎已经正确实现了,只是<div>宽度是0所以没有显示出来。加个

    		html, body {
    			width: 100%;
    			height: 100%;
    		}
    

    就能显示出来了。

    HTML代码

  • @Ta / 2023-02-15 / /
    @老虎会游泳,好吧,看样子它给你的回复并没有超过单次回复的字符上限。尝试给它加点需求,它会重新发送一份新的代码,代码量超过上限之后,我好像遇到了“代码不完整的问题”。
  • @Ta / 2023-02-15 / /

    @TabKey9,你看第二个,已经分段了。但继续后是连上了的。
    代码没有不完整,只是功能不正确而已。
    或者,它可能可以在IE上正确运行。
    代码确实在运行,DIV也显示到了预期的位置,只是颜色没有渲染出来而已。

  • @Ta / 2023-02-15 / /

    @TabKey9,第二个的问题也找到了,是渲染的像素太小了,存在时间又短,颜色又浅,所以我没看见。如果把所有px前面都加个0,就能看见了,在最中间。

    当然,这肯定不是你想要的效果,而且这个代码的风格看起来就是IE6年代的。

    HTML代码

  • @Ta / 2023-02-15 / /

    @TabKey9,经过多轮对话,它成功了。

    图片.png(35.25 KB)
    图片.png(59.78 KB)
    图片.png(27.66 KB)
    图片.png(35.98 KB)

    HTML代码

    虽然不是很好看,但确实可以运行不是吗

  • @Ta / 2023-02-15 / /

    @老虎会游泳,哈哈,让它写个炫酷效果的试试
    小米20定制版

  • @Ta / 2023-02-15 / /

    @老虎会游泳,然不是很好看,但确实可以运行

    我又复现了哪个问题,看截图,感觉拼接不上,for之后马上就是Firework.prototype.update = function() {
    QQ截图20230215175940.png(153.12 KB)

  • @Ta / 2023-02-15 / /

    @老虎会游泳,我好像找到了问题的原因,它帮我把不完整的function重发一次,并继续往下发送剩余代码。不确定是不是这样,我截取了前后两部分代码进行了比较,如图
    23.png(94.52 KB)

  • @Ta / 2023-02-15 / /

    这是第一次对话给出的正常代码

    HTML代码

    这是再次对话之后的代码,
    按我的理解,我把两部分代码拼接在一起之后,可我并没看见任何烟花相关的效果

    HTML代码

  • @Ta / 2023-02-15 / /

    牛逼哄哄
    小米8(白)

  • @Ta / 2023-02-15 / /

    HTML代码

    一加8Pro

添加新回复
回复需要登录