Need help to encrypt and decrypt the RS232 serial port data
9 views (last 30 days)
Show older comments
SINGARAVELAN ARUMUGAM
on 20 May 2015
Commented: SINGARAVELAN ARUMUGAM
on 21 May 2015
I am doing project on wireless smart meter using XBee. my aim is to transmit and receive smart meter data from one XBee to another XBee with encryption. So I need help to write code for encrypt at transmit side XBee(RS232 protocol), and code for decrypt at receive side XBee.
0 Comments
Accepted Answer
Walter Roberson
on 20 May 2015
function send_encrypted(s, data_to_send)
%s is to be a serial object, data_to_send is numeric
data_as_bytes = typecast(data_to_send, 'uint8');
encrypted_bytes = encrypt_bytes(data_as_bytes);
cname = uint8(0 + class(data_to_send)); %chars to bytes
cnamehdr = [uint8(length(cname)), cname];
enchdr = uint16(length(encrypted_bytes));
header = [cnamehdr, enchdr];
fwrite(s, header);
fwrite(s, encrypted_bytes);
end
function data = receive_encrypted(s)
%s is the serial connection.
cnamelen = fread(s, 1, 'uint8');
cname = char(fread(s, cnamelen, 'uint8'));
numencbytes = fread(s, 1, 'uint16');
encbytes = fread(s, numencbytes, 'uint8');
data = typecast( decrypt_bytes(encbytes), cname); %turn it back to double
end
function enc = encrypt_bytes(bytes_to_encrypt)
%magic encryption goes here
enc = 255 - bytes_to_encrypt; %this is the encryption
end
function decr = decrypt_bytes(bytes_to_decrypt);
%magic decryption goes here
decr = 255 - bytes_to_decrypt; %this undoes the encryption
end
Extensions would be required to handle more than 65535 bytes of data per transmission, or to transparently handle strings during transmission, or if you wanted to send data with mixed data types.
By the way, you did know that the Zigbee support AES encryption in hardware, right?
More Answers (0)
See Also
Categories
Find more on Encryption / Cryptography in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!