``
本帖最后由 sapodillas 于 2015-6-22 17:17 编辑
2015.6.19
刚拿GoKit,小巧紧凑,但是快递不给力,把外面的亚格力板外壳磕破了......
板子主控是C8T6,上下层的效果图
上电测试,以及LAN及WAN下微信平台对GoKit的测试效果
总体来说,将来的市场上类似GoKit的产品会多种多样,越来越贴近人们的生活,但是这也会导致人们对移动终端中信息传输的安全性有着必要的需求。因此,选取一种适合应用在物联网移动终端小数据加密算法尤为重要。
本帖会在近期针对轻量级加密算法在物联网中的应用进行讨论,并以GoKit作为测试平台进行设计,欢迎大家一起加入,也希望大家多给意见和想法。
----------------------------------------------------------------------------------------
2015.6.20
GoKit机智云官网部分资料
----------------------------------------------------------------------------------------
2015.6.21
二元扩域下椭圆曲线加密算法的基本运算
在matlab的Command Windows窗口中可以通过输入help指令来查看各函数的属性及用法。
% BinaryConvolution and Polynomial Multiplication % p = bconv( b, a ) 多项式二进制乘法函数
% c = conv( b, a ) 其中矩阵c是乘积,矩阵从后往前表示从0次项到各高次项的系数。
% Binary Deconvolution andpolynomial division
% [ q, r ] = bdeconv( b, a ) 多项式二进制除法函数
% [ q, r ] = deconv( b, a ) 其中矩阵q和r分别为商和余数,矩阵从后往前表示从0次项到各高次项的系数。
验证二元扩域下乘法运算,取不可约多项式为(100101),(11001)*(10011)=(00111),即计算(x^4+x^3+1)*(x^4+x+1)的多项式二进制乘法。
得到的结果对不可约多项式进行二进制取余运算,可以验证二元扩域下乘法算法的正确性。
----------------------------------------------------------------------------------------
2015.6.22
二元扩域下椭圆曲线加密算法域元素基本运算
1. 元元素加法
- // f2m_add.v
- // f2m_add: c = a + b, in field F_{2^M}
- //`include "inc.v"
- `include "../rtl/inc.v"
- module f2m_add(
- input wire [`WIDTH:0] pi_a,
- input wire [`WIDTH:0] pi_b,
- output wire [`WIDTH:0] po_c
- );
- assign po_c = pi_a ^ pi_b;
- endmodule
2. 域元素乘法- // f2m_mult.v
- `include "../rtl/inc.v"
- module f2m_mult(
- input wire [0:0] clk,
- input wire [0:0] rst,
- input wire [`WIDTH:0] pi_a,
- input wire [`WIDTH:0] pi_b,
- input wire [`M:0] pi_fx,
- output reg done,
- output reg [`WIDTH:0] po_c
- );
- parameter [1:0] IDLE = 2'b00;
- parameter [1:0] BUSY = 2'b01;
- //parameter [1:0] WAIT = 2'b10;
- //parameter [1:0] FREE = 2'b11;
- reg [0:0] state = IDLE;
- //reg [0:0] next = IDLE;
- reg [`WIDTH:0] a = 0;
- reg [`WIDTH:0] b = 0;
- reg [`M:0] fx = 0;
- reg [`WIDTH:0] i = 0;
- reg [`WIDTH:0] cnt = 0;
- always @(posedge clk)// or negedge rst
- if(rst == 1'b1) begin
- state <= IDLE;
- done <= 1'b0;
- po_c <= 0;//5'b10101;
- cnt <= 0;
- end
-
- else if(state == IDLE && done == 1'b0) begin
- a <= pi_a;
- b <= pi_b;
- fx <= pi_fx;
- //done <= 1'b0;
- if(a[0] == 1'b1)
- po_c <= pi_b;
- else
- po_c <= 0;
- state <= BUSY;
- end
- else if(state == BUSY && done == 1'b0) begin
- if(b[`WIDTH] == 1'b0) begin
- for(i = `WIDTH; i > 0; i = i - 1)
- b[i] <= b[i-1];
- b[0] <= 1'b0;//b <= (b << 1);
- end
-
- else if(b[`WIDTH] == 1'b1) begin
- for(i = `WIDTH; i > 0; i = i - 1)
- b[i] <= b[i-1] ^ fx[i];
- b[0] <= fx[0];
- end
-
- for(i = 0; i < `WIDTH-1; i = i + 1)
- a[i] <= a[i+1];//a <= (a >> 1);
- a[`WIDTH] = 1'b0;
- if(a[0] == 1'b1)
- po_c <= po_c ^ b;
- cnt <= cnt + 1;
- if(cnt == `WIDTH) begin
- done <= 1'b1;
- state <= IDLE;
- end
- end
- endmodule
分享一些有关加密算法的论文
``