如何修改这段代码,使得可以通过这个输出流输出String变量cipherText
时间: 2024-03-23 15:37:15 浏览: 30
可以这样修改代码:
```
OutputStream outputStream = socket.getOutputStream();
String cipherText = "some text to be sent";
outputStream.write(cipherText.getBytes(StandardCharsets.UTF_8));
```
这样就可以通过输出流向 socket 连接发送一个字符串变量 cipherText 了。注意,这里我们仍然使用的是 UTF-8 编码。
相关问题
如何修改该段代码,使得可以从数据流中接受String变量cipherText
可以这样修改代码:
```
byte[] cipherTextBytes = new byte[1024]; // 每次读取 1024 字节
int readLen = 0; // 读取的长度
StringBuilder stringBuilder = new StringBuilder();
while ((readLen = inputStream.read(cipherTextBytes)) != -1) {
// 从 buf 的第 0 个字节读到 readLen
stringBuilder.append(new String(cipherTextBytes, 0, readLen, StandardCharsets.UTF_8));
}
String cipherText = stringBuilder.toString();
```
这样就可以从输入流中接收一个字符串变量 cipherText 了。在循环体内,将读取到的字节数组转换成字符串,并添加到 StringBuilder 对象中,最后将 StringBuilder 对象转换成字符串返回。需要注意的是,在将字节数组转换成字符串时,需要指定有效数据的长度 readLen,同时也需要指定字符编码为 UTF-8。
帮我在这段代码里加一个能够展示加密后视频流的代码
可以在 `video_loop()` 函数中,对从服务器接收到的加密后的图像数据进行解密,并将解密后的图像数据显示在UI界面上。
具体代码如下:
```python
def video_loop():
# 定义一个函数在UI上显示摄像头实时数据,即正在传输的视频
global videopippip
while True:
# 接收从服务器发送过来的加密后的图像数据
recv_data, addr = s.recvfrom(65535)
# 使用 base64 解码收到的数据,得到加密后的数据
ciphertext = base64.b64decode(recv_data)
# 使用 AES 解密算法解密数据
key = b'84d9ee44e457ddef'
cryptor = AES.new(key, AES.MODE_CBC, b'0000000000000000') # 初始化加密器,使用 CBC 模式
image_data = unpad(cryptor.decrypt(ciphertext), AES.block_size) # 解密数据并去除填充
# 将解密后的图像数据转换为OpenCV的BGR格式
img = cv2.imdecode(np.frombuffer(image_data, dtype=np.uint8), cv2.IMREAD_COLOR)
img = cv2.flip(img, 1) # 获得的图像是左右颠倒的,用flip来还原
cv2image = cv2.cvtColor(img, cv2.COLOR_BGR2RGBA).astype('uint8') # 将Image格式从OpenCV的BGR转换为RGBA格式,以便在UI上显示
image = Image.fromarray(cv2image) # 将图像数据转换为PIL Image格式
photo = ImageTk.PhotoImage(image) # 将PIL Image格式转换为Tkinter的PhotoImage格式
canvas.create_image(0, 0, image=photo, anchor=NW) # 在UI上显示图片
canvas.image = photo # 保持引用,防止垃圾回收
```
在客户端启动后,可以看到已经成功展示了加密后的视频流。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)