在程序退出后,有没有办法确保密钥材料从内存中安全擦除?能够手动擦除并保持程序运行会更好.由于Haskell使用自动垃圾收集(如果有大量可用内存可能根本不会发生?),我认为第二项任务是不可能的.能用这个目的的东西能用FFI实现吗?
Network.Socket中提供了一个原始套接字类型,但是在近端绑定套接字上有一条注释"目前只支持Unix域套接字并支持Internet系列".我怎样才能在haskell中使用原始套接字?
我正在尝试实现的功能,如使用Python代码:
import binascii
import socket
# Create raw socket.
ethType = b'FFFF' # 2 bytes, has to be >= 0x0600. FFFF is "unavailable" by IEEE.
sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW)
sock.bind( ('lo', int(ethType,16)) )
# Create packet.
srcMac = b'000000000000' # 6 bytes
destMac = b'000000000000' # 6 bytes
header = binascii.a2b_hex( destMac + srcMac + ethType ) # 14 bytes
message = b'Hello, World!'
sock.send(header + message)
# Receive such packets
while True: print (sock.recv(65535))
Run Code Online (Sandbox Code Playgroud)
EDIT1:在Haskell中,我sock <- socket …