local serialization = require("serialization") local component = require("component") --此表包含了要发送到接收方电脑的数据。 --表中还有信息头,供接收方用来解密数据。 local __packet = { header = { sPublic = nil, iv = nil }, data = nil } --读取公钥文件。 local file = io.open("rPublic","rb") local rPublic = file:read("*a") file:close() --将公钥解序列化为二进制形式。 local rPublic = serialization.unserialize(rPublic) --重建公钥对象。 local rPublic = component.data.deserializeKey(rPublic,"ec-public") --为此会话生成一个公钥与一个私钥。 local sPublic, sPrivate = component.data.generateKeyPair(384) --生成一个加密密钥。 local encryptionKey = component.data.md5(component.data.ecdh(sPrivate, rPublic)) --将信息头中值'iv'设定为一个随机生成的16位数字字符串。 __packet.header.iv = component.data.random(16) --将信息头中值'sPublic'设定为一个字符串。 __packet.header.sPublic = sPublic.serialize() --待加密的数据。 __packet.data = "lorem ipsum" --数据被序列化并被加密了。 __packet.data = component.data.encrypt(serialization.serialize(__packet.data), encryptionKey, __packet.header.iv) --为简单起见,此样例中的电脑使用连接卡(ocdoc.cil.li/item:linked_card:zh) component.tunnel.send(serialization.serialize(__packet))