From f2a84a86e73b77f8f2a22153e1b8b401ae8a8197 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Thu, 20 Dec 2018 14:00:01 +0800 Subject: [PATCH] Add ch7_library sample code --- ch7_library/src/crypto.c | 48 ++++++++++++++++ ch7_library/lib/crypto.h | 28 +++++++++ ch7_library/src/crypto.h | 28 +++++++++ ch7_library/test/main.c | 43 ++++++++++++++ 4 files changed, 147 insertions(+), 0 deletions(-) diff --git a/ch7_library/lib/crypto.h b/ch7_library/lib/crypto.h new file mode 100644 index 0000000..0aea94f --- /dev/null +++ b/ch7_library/lib/crypto.h @@ -0,0 +1,28 @@ +/******************************************************************************** + * Copyright: (C) 2018 LingYun IoT System Studio + * All rights reserved. + * + * Filename: crypto.h + * Description: This head file is LingYun crypto library head file + * + * Version: 1.0.0(2018年12月20日) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "2018年12月20日 12时32分09秒" + * + ********************************************************************************/ + +#ifndef _CRYPTO_H_ +#define _CRYPTO_H_ + +/* Description: This function used to encrypto message in $plaintext, and put ciphertext into $ciphertext + * Return value: 0: Success <0: Failure + */ +extern int encrypt(char *plaintext, char *ciphertext, int size); + +/* Description: This function used to decrypto message in $ciphertext, and put plaintext into $plaintext + * Return value: 0: Success <0: Failure + */ +extern int decrypt(char *ciphertext, char *plaintext, int size); + +#endif /* ----- #ifndef _CRYPTO_H_ ----- */ + diff --git a/ch7_library/src/crypto.c b/ch7_library/src/crypto.c new file mode 100644 index 0000000..1bcc9bc --- /dev/null +++ b/ch7_library/src/crypto.c @@ -0,0 +1,48 @@ +/********************************************************************************* + * Copyright: (C) 2018 LingYun IoT System Studio + * All rights reserved. + * + * Filename: crypto.c + * Description: This file is LingYun crypto library + * + * Version: 1.0.0(2018年12月20日) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "2018年12月20日 11时56分04秒" + * + ********************************************************************************/ +#include <string.h> + +int encrypt(char *plaintext, char *ciphertext, int size) +{ + int i; + + if( size < strlen(plaintext) ) + { + return -1; + } + + for(i=0; i<strlen(plaintext); i++) + { + ciphertext[i] = plaintext[i]+3; + } + + return 0; +} + +int decrypt(char *ciphertext, char *plaintext, int size) +{ + int i; + + if( size < strlen(ciphertext) ) + { + return -1; + } + + for(i=0; i<strlen(ciphertext); i++) + { + plaintext[i] = ciphertext[i]-3; + } + + return 0; +} + diff --git a/ch7_library/src/crypto.h b/ch7_library/src/crypto.h new file mode 100644 index 0000000..0aea94f --- /dev/null +++ b/ch7_library/src/crypto.h @@ -0,0 +1,28 @@ +/******************************************************************************** + * Copyright: (C) 2018 LingYun IoT System Studio + * All rights reserved. + * + * Filename: crypto.h + * Description: This head file is LingYun crypto library head file + * + * Version: 1.0.0(2018年12月20日) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "2018年12月20日 12时32分09秒" + * + ********************************************************************************/ + +#ifndef _CRYPTO_H_ +#define _CRYPTO_H_ + +/* Description: This function used to encrypto message in $plaintext, and put ciphertext into $ciphertext + * Return value: 0: Success <0: Failure + */ +extern int encrypt(char *plaintext, char *ciphertext, int size); + +/* Description: This function used to decrypto message in $ciphertext, and put plaintext into $plaintext + * Return value: 0: Success <0: Failure + */ +extern int decrypt(char *ciphertext, char *plaintext, int size); + +#endif /* ----- #ifndef _CRYPTO_H_ ----- */ + diff --git a/ch7_library/test/main.c b/ch7_library/test/main.c new file mode 100644 index 0000000..4ddc4f1 --- /dev/null +++ b/ch7_library/test/main.c @@ -0,0 +1,43 @@ +/********************************************************************************* + * Copyright: (C) 2018 LingYun IoT System Studio + * All rights reserved. + * + * Filename: main.c + * Description: This file is LingYun Crypto library test program + * + * Version: 1.0.0(2018年12月20日) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "2018年12月20日 12时33分32秒" + * + ********************************************************************************/ + +#include <stdio.h> +#include <string.h> +#include "crypto.h" + +int main(int argc, char *argv[]) +{ + char *message="abcdefghijklmnopq"; + char ciphertext[64]; + char plaintext[64]; + + memset(ciphertext, 0, sizeof(ciphertext)); + if( encrypt(message, ciphertext, sizeof(ciphertext))< 0 ) + { + printf("encrypt plaintext failure\n"); + return -1; + } + printf("encrypt ciphertext: %s\n", ciphertext); + + + memset(plaintext, 0, sizeof(plaintext)); + if( decrypt(ciphertext, plaintext, sizeof(plaintext))< 0 ) + { + printf("decrypt ciphertext failure\n"); + return -1; + } + printf("decrypt plaintext: %s\n", plaintext); + + + return 0; +} -- Gitblit v1.9.1