具体秘密共享的流程可以参考下面这个链接的内容:https://blog.csdn.net/Matrix_element/article/details/117357359

main1.m
加法方案的主函数:确认门限(代码里(5,3))以及对应的两个多项式(代码对应的多项式是y1 = 2 * x ^ 2 - 3 * x + 4, y2 = x ^ 2 + 5 x - 6,所以通过多项式分发给每个人两个值,最后通过3个人的子秘密和恢复出4 + -6 = - 2)-> 给每个人分发子秘密值 -> 通过3个人的子秘密值和使用拉格朗日恢复出-2(两个多项式的常数项和)

%%%加法方案
%%分发
% 首先确定方案门限值a = [5,3];
% 输入多项式的参数,生成每个人相应的密钥
% coef1 = [2,-3,4;
%          1,5,-6];%自己定义多项式系数矩阵
coef1 = ceil(rand(2,a(2))*10)%随机生成多项式系数矩阵s = Sharing(a, coef1);add_s = sum(s,2);%%恢复
%P = [1,3,5];
P = [1,add_s(1);3,add_s(3);5,add_s(5)];
y = Recover(a,P)
% %恢复加法秘密值
% ab=0;
% ab = add_s(1) * ( (0-P(2)) * (0-P(3)) ) / ( (P(1)-P(2)) * (P(1)-P(3)) ) + ...
%      add_s(3) * ( (0-P(1)) * (0-P(3)) ) / ( (P(2)-P(1)) * (P(2)-P(3)) ) + ...
%      add_s(5) * ( (0-P(1)) * (0-P(2)) ) / ( (P(3)-P(1)) * (P(3)-P(2)) )
% %恢复多项式
% syms x;
% y = add_s(1) * ( (x-P(2)) * (x-P(3)) ) / ( (P(1)-P(2)) * (P(1)-P(3)) ) + ...
%      add_s(3) * ( (x-P(1)) * (x-P(3)) ) / ( (P(2)-P(1)) * (P(2)-P(3)) ) + ...
%      add_s(5) * ( (x-P(1)) * (x-P(2)) ) / ( (P(3)-P(1)) * (P(3)-P(2)) )
% y = expand(y)

main2.m
乘法方案主函数:确认门限以及对应的两个多项式-> 给每个分发子秘密值 -> 每个人再通过分发的子秘密值乘积为常数项生成自己的多项式->用自己的多项式给每个人再次进行分发(代码里的C矩阵)->计算lamda向量(这个每个人都可以计算) ->根据计算的lamda向量和每个人手里拥有的向量求每个人的最终拥有的子秘密值-> 通过3个人的子秘密值和使用拉格朗日恢复出-24(两个多项式的常数项积)

%%%乘法
%%一、首先确定方案门限值a = [5,3];
% 输入多项式的参数,生成每个人相应的密钥
%coef1 = ceil(rand(2,a(2))*10)%随机生成矩阵值coef1 = [2,-3,4;1,5,-6];%或者自定义矩阵s = Sharing(a, coef1);mul_s = prod(s,2);%%二、每个P根据自己得到的d生成自己的n-1次多项式,并分发给每个参与者
%coef_H = [ceil(rand(a(1),a(2)-1)*100),mul_s]%随机生成多项式系数矩阵
coef_H = [1,-1,mul_s(1);1,-10,mul_s(2);1,-100,mul_s(3);1,-200,mul_s(4);1,-300,mul_s(5)];%或者自定义多项式系数矩阵
%计算C矩阵
CMatrix = CalculateCMatrix1(a,coef_H)%%三、计算λ矩阵,每个人Pi根据自己得到的5个cji(1 <= j <= 5)
lamda = zeros(1,a(1));
M = zeros(a(1),a(1));
m = [1:1:a(1)]';
for i = 1:a(1)M(:,i) = m.^(i-1)
end
% M = [1,1,1,1,1;
%     1,2,2^2,2^3,2^4;
%     1,3,3^2,3^3,3^4;
%     1,4,4^2,4^3,4^4;
%     1,5,5^2,5^3,5^4];
lamda = [1,0,0,0,0] * inv(M);
%每个人根据自己得到的Cji计算C值
C = lamda * CMatrix;%%四、进行恢复(比如满足1,3,5人),根据这几个人计算得到的C值进行恢复
P = [1,3,5];
ab=0;
ab = C(P(1)) * ( (0-P(2)) * (0-P(3)) ) / ( (P(1)-P(2)) * (P(1)-P(3)) ) + ...C(P(2)) * ( (0-P(1)) * (0-P(3)) ) / ( (P(2)-P(1)) * (P(2)-P(3)) ) + ...C(P(3)) * ( (0-P(1)) * (0-P(2)) ) / ( (P(3)-P(1)) * (P(3)-P(2)) )
%恢复多项式
syms x;
y = C(P(1)) * ( (x-P(2)) * (x-P(3)) ) / ( (P(1)-P(2)) * (P(1)-P(3)) ) + ...C(P(2)) * ( (x-P(1)) * (x-P(3)) ) / ( (P(2)-P(1)) * (P(2)-P(3)) ) + ...C(P(3)) * ( (x-P(1)) * (x-P(2)) ) / ( (P(3)-P(1)) * (P(3)-P(2)) );
y = expand(y)

Sharing.m

function [s] = Sharing(a,b)
%计算分发给每个人的密钥
poly_num = size(b,1);%多项式个数
s = zeros(a(1),poly_num);
max = size(b,2);%每个多项式项数
for x = 1:a(1)for i = 1:poly_numfor j = 0:max-1s(x,i) = s(x,i) + b(i,max-j) * x^j;end
%     s(x,1) = b(1,1) * x^2 + b(1,2) * x + b(1,3);
%     s(x,2) = b(2,1) * x^2 + b(2,2) * x + b(2,3);end
end

CalculateCMatrix.m
计算c矩阵方法1

function [s] = CalculateCMatrix(a,coef_H)% s = zeros(a(1),a(1));
% max = size(coef_H,2);
% for i = 1:a(1)
%     for j = 1:a(1)
%        for t = 0:max-1
%             s(i,j) = s(i,j) + coef_H(i,max-t) * j^t;
%        end
%     end
% endM = zeros(a(2),a(1));
m = [1:1:a(1)];
for i = a(2):-1:1M(i,:) = m.^(a(2)-i);
end
s = coef_H * M;end

方法2:

function [C] = CalculateCMatrix(a,coef_H)
C = zeros(a(1),a(1));
for i = 1:a(1)for j = 1:a(1)C(i,j) = coef_H(i,1) * j^2 + coef_H(i,2) * j + coef_H(i,3);end
end
end

Recover.m
朗格朗日恢复

function [y] = Recover(a,P)num = size(P,1);y = 0;if num<a(2)tip = "人数不足恢复"elsesyms x;for i = 1:nums = P(i,2);for j = 1:num               if(i ~= j)s = s * (x - P(j,1))/ ( P(i,1) - P(j,1) );end            endy = y + s;end
%         y = add_s(1) * ( (x-P(2)) * (x-P(3)) ) / ( (P(1)-P(2)) * (P(1)-P(3)) ) + ...
%              add_s(3) * ( (x-P(1)) * (x-P(3)) ) / ( (P(2)-P(1)) * (P(2)-P(3)) ) + ...
%              add_s(5) * ( (x-P(1)) * (x-P(2)) ) / ( (P(3)-P(1)) * (P(3)-P(2)) )endy = expand(y);
end

以上函数可以将整个流程进行实现。接下来使用matlab appdesigner调用上面函数进行可视化实现,整个流程更加清晰明了。

classdef SharingSecret < matlab.apps.AppBase% Properties that correspond to app componentsproperties (Access = public)UIFigure          matlab.ui.FigureShamirLabel       matlab.ui.control.LabelPanel             matlab.ui.container.PanelButton            matlab.ui.control.ButtonnSpinnerLabel     matlab.ui.control.LabelnSpinner          matlab.ui.control.SpinnermSpinnerLabel     matlab.ui.control.LabelmSpinner          matlab.ui.control.SpinnernmEditFieldLabel  matlab.ui.control.LabelnmEditField       matlab.ui.control.EditFieldPanel_2           matlab.ui.container.PanelButtonGroup_2     matlab.ui.container.ButtonGroupButton_4          matlab.ui.control.RadioButtonButton_5          matlab.ui.control.RadioButtonUITable           matlab.ui.control.TableButton_6          matlab.ui.control.ButtonUITable2          matlab.ui.control.TablePanel_3           matlab.ui.container.PanelLabel_4           matlab.ui.control.LabelUITable2_3        matlab.ui.control.TableUITable2_4        matlab.ui.control.TableCLabel            matlab.ui.control.LabelCLabel_2          matlab.ui.control.LabelUITable2_5        matlab.ui.control.TableButtonGroup_3     matlab.ui.container.ButtonGroupButton_9          matlab.ui.control.RadioButtonButton_10         matlab.ui.control.RadioButtonButton_11         matlab.ui.control.ButtonButton_12         matlab.ui.control.ButtonPanel_4           matlab.ui.container.PanelTextArea          matlab.ui.control.TextAreaButton_8          matlab.ui.control.ButtonButton_7          matlab.ui.control.ButtonEditFieldLabel    matlab.ui.control.LabeliEditField2       matlab.ui.control.NumericEditFieldiEditFieldLabel   matlab.ui.control.LabeliEditField        matlab.ui.control.NumericEditFieldUITable3          matlab.ui.control.TableButton_14         matlab.ui.control.ButtonButton_13         matlab.ui.control.Buttonendproperties (Access = private)a;%门限flag_trapdoor = 0; %门限是否设置成功flag_share = 0; %分发是否成功s;%给每个人分发的秘密值s_add;%加法方案分配给每个人的值求和s_mul;%乘法方案分配给每个人的值求积endmethods (Access = private)% Button pushed function: Buttonfunction Trapdoor(app, event)temp1 = app.nSpinner.Value;temp2 = app.mSpinner.Value;app.a = [temp1,temp2];if temp2 > temp1msgbox("解密人数>总人数,重新输入","提示"); elseif temp2 <= 1msgbox("解密人数需大于1","提示"); elseapp.nmEditField.Value = "(" + app.a(1) + "," + app.a(2) + ")";app.flag_trapdoor = 1;temp = char();for i = 1:app.a(1)temp = [temp;sprintf('第%3d个人',i)];              end app.UITable2.ColumnName = temp;app.UITable2_3.ColumnName = temp;app.UITable2_4.ColumnName = temp;app.UITable2_5.ColumnName = temp;
%                 c = char();
%                 for i = 1:app.a(2)
%                      if i==1
%                          c = ['    常数项 ';c];
%                      else
%                          c = [sprintf('%3d次项系数 ',i-1);c];
%                      end
%
%                 end
%                 app.UITable2_3.RowName = c;%app.ButtonGroup_2.SelectedObject.Value = 0;endend% Callback function: ButtonGroup_2, UITable2function ButtonGroup_2SelectionChanged(app, event)selectedButton = app.ButtonGroup_2.SelectedObject;if app.flag_trapdoor == 0msgbox("请先输入门限值","提示");elsec = char();for i = 1:app.a(2)if i==1c = ['    常数项 ';c];elsec = [sprintf('%3d次项系数 ',i-1);c];endendapp.UITable.RowName = c;b = zeros(app.a(2),2);             app.UITable.Data = b;switch selectedButton.Textcase "自定义多项式系数"%msgbox('1');app.UITable.Data = b;case "随机生成"%msgbox('2');%app.UITable.RowName = c;%app.UITable.Data = ceil(rand(2,app.a(2))*10)';app.UITable.Data = randi([-10 10],app.a(2),2);app.flag_share = 1;        endendend% Cell edit callback: UITablefunction UITableCellEdit(app, event)end% Button pushed function: Button_6function Button_6Pushed(app, event)app.s = Sharing(app.a, app.UITable.Data');app.UITable2.Data = app.s';app.sapp.s_add = sum(app.s, 2);app.s_mul = prod(app.s, 2);end% Button pushed function: Button_7function Button_7Pushed(app, event)%t;temp = [app.iEditField.Value,app.iEditField2.Value];app.UITable3.Data = [app.UITable3.Data;temp];end% Button pushed function: Button_8function Button_8Pushed(app, event)if size(app.UITable3.Data,1)<app.a(2)msgbox("不足恢复人数","提示");else                P  = app.UITable3.Data(1:app.a(2),:);%取前m行进行计算y = Recover(app.a,P);app.TextArea.Value = string(y);endend% Selection changed function: ButtonGroup_3function ButtonGroup_3SelectionChanged(app, event)selectedButton = app.ButtonGroup_3.SelectedObject;if app.flag_share ==0msgbox("请先完成乘法密钥分发","提示");elsec = char();for i = 1:app.a(2)if i==1c = ['    常数项 ';c];elsec = [sprintf('%3d次项系数 ',i-1);c];endendb = zeros(app.a(2),app.a(1));             app.UITable2_3.Data = b;switch selectedButton.Textcase "自定义多项式系数"%msgbox('1');app.UITable2_3.ColumnEditable = true;app.UITable2_3.Data = b;case "随机生成"%msgbox('2');app.UITable2_3.RowName = c;
%                        t =  ceil(rand(app.a(1),app.a(2)-1)*10)'
%                        t =  app.s%app.UITable2_3.Data = [ceil(rand(app.a(1),app.a(2)-1)*10)';app.s_mul'];   app.UITable2_3.Data = [randi([-100 100],app.a(2)-1,app.a(1));app.s_mul'];endendend% Button pushed function: Button_11function Button_11Pushed(app, event)CMatrix = CalculateCMatrix(app.a,app.UITable2_3.Data')app.UITable2_4.Data = CMatrix;end% Button pushed function: Button_12function Button_12Pushed(app, event)%lamda = zeros(1,a(1));M = zeros(app.a(1),app.a(1));m = [1:1:app.a(1)]';for i = 1:app.a(1)M(:,i) = m.^(i-1)enddesMatrix = zeros(1,app.a(1));desMatrix(1) = 1;lamda = desMatrix * inv(M);%每个人根据自己得到的Cji计算C值C = lamda * app.UITable2_4.Data;app.UITable2_5.Data = C;end% Button pushed function: Button_13function Button_13Pushed(app, event)app.UITable.Data = [];app.UITable2.Data = [];app.UITable2_3.Data = [];app.UITable2_4.Data = [];app.UITable2_5.Data = [];app.UITable3.Data = [];app.TextArea.Value = "";app.iEditField.Value= 0;app.iEditField2.Value= 0;app.nmEditField.Value = '';app.nSpinner.Value = 0;app.mSpinner.Value = 0;end% Button pushed function: Button_14function Button_14Pushed(app, event)app.UITable3.Data = [];endend% App initialization and constructionmethods (Access = private)% Create UIFigure and componentsfunction createComponents(app)% Create UIFigureapp.UIFigure = uifigure;app.UIFigure.Color = [0.9412 0.9412 0.9412];app.UIFigure.Position = [100 100 640 734];app.UIFigure.Name = 'UI Figure';app.UIFigure.Resize = 'off';% Create ShamirLabelapp.ShamirLabel = uilabel(app.UIFigure);app.ShamirLabel.BackgroundColor = [0.302 0.749 0.9294];app.ShamirLabel.HorizontalAlignment = 'center';app.ShamirLabel.FontName = '微软雅黑';app.ShamirLabel.FontSize = 20;app.ShamirLabel.FontWeight = 'bold';app.ShamirLabel.Position = [1 706 640 29];app.ShamirLabel.Text = '隐私计算-Shamir秘密共享方案';% Create Panelapp.Panel = uipanel(app.UIFigure);app.Panel.BorderType = 'none';app.Panel.TitlePosition = 'centertop';app.Panel.Title = '确认门限方案';app.Panel.BackgroundColor = [1 1 0.9412];app.Panel.FontWeight = 'bold';app.Panel.FontSize = 16;app.Panel.Position = [1 625 640 82];% Create Buttonapp.Button = uibutton(app.Panel, 'push');app.Button.ButtonPushedFcn = createCallbackFcn(app, @Trapdoor, true);app.Button.Position = [365 18 100 25];app.Button.Text = '确定';% Create nSpinnerLabelapp.nSpinnerLabel = uilabel(app.Panel);app.nSpinnerLabel.HorizontalAlignment = 'right';app.nSpinnerLabel.Position = [4 19 68 22];app.nSpinnerLabel.Text = '总人数(n):';% Create nSpinnerapp.nSpinner = uispinner(app.Panel);app.nSpinner.Limits = [0 1000];app.nSpinner.ValueDisplayFormat = '%.0f';app.nSpinner.HorizontalAlignment = 'center';app.nSpinner.Position = [71 19 83 22];% Create mSpinnerLabelapp.mSpinnerLabel = uilabel(app.Panel);app.mSpinnerLabel.HorizontalAlignment = 'right';app.mSpinnerLabel.Position = [175 19 83 22];app.mSpinnerLabel.Text = '解密人数(m):';% Create mSpinnerapp.mSpinner = uispinner(app.Panel);app.mSpinner.Limits = [0 1000];app.mSpinner.ValueDisplayFormat = '%.0f';app.mSpinner.HorizontalAlignment = 'center';app.mSpinner.Position = [257 19 80 22];% Create nmEditFieldLabelapp.nmEditFieldLabel = uilabel(app.Panel);app.nmEditFieldLabel.HorizontalAlignment = 'right';app.nmEditFieldLabel.Position = [485 19 69 22];app.nmEditFieldLabel.Text = '门限(n,m):';% Create nmEditFieldapp.nmEditField = uieditfield(app.Panel, 'text');app.nmEditField.Editable = 'off';app.nmEditField.HorizontalAlignment = 'center';app.nmEditField.Position = [553 19 74 22];% Create Panel_2app.Panel_2 = uipanel(app.UIFigure);app.Panel_2.TitlePosition = 'centertop';app.Panel_2.Title = '加法乘法方案子秘密值分发';app.Panel_2.BackgroundColor = [0.9608 1 0.9804];app.Panel_2.FontWeight = 'bold';app.Panel_2.FontSize = 16;app.Panel_2.Position = [1 422 640 204];% Create ButtonGroup_2app.ButtonGroup_2 = uibuttongroup(app.Panel_2);app.ButtonGroup_2.SelectionChangedFcn = createCallbackFcn(app, @ButtonGroup_2SelectionChanged, true);app.ButtonGroup_2.Position = [8 133 292 30];% Create Button_4app.Button_4 = uiradiobutton(app.ButtonGroup_2);app.Button_4.Text = '自定义多项式系数';app.Button_4.Position = [11 3 118 22];app.Button_4.Value = true;% Create Button_5app.Button_5 = uiradiobutton(app.ButtonGroup_2);app.Button_5.Text = '随机生成';app.Button_5.Position = [198 4 70 22];% Create UITableapp.UITable = uitable(app.Panel_2);app.UITable.ColumnName = {'第一个多项式参数'; '第二个多项式参数'};app.UITable.RowName = {};app.UITable.ColumnEditable = true;app.UITable.CellEditCallback = createCallbackFcn(app, @UITableCellEdit, true);app.UITable.Position = [8 13 292 114];% Create Button_6app.Button_6 = uibutton(app.Panel_2, 'push');app.Button_6.ButtonPushedFcn = createCallbackFcn(app, @Button_6Pushed, true);app.Button_6.Position = [517 137 100 26];app.Button_6.Text = '分发子秘密值';% Create UITable2app.UITable2 = uitable(app.Panel_2);app.UITable2.ColumnName = '';app.UITable2.RowName = {};app.UITable2.CellEditCallback = createCallbackFcn(app, @ButtonGroup_2SelectionChanged, true);app.UITable2.Position = [325 13 292 114];% Create Panel_3app.Panel_3 = uipanel(app.UIFigure);app.Panel_3.TitlePosition = 'centertop';app.Panel_3.Title = '乘法方案再分发';app.Panel_3.BackgroundColor = [0.9412 1 0.9412];app.Panel_3.FontWeight = 'bold';app.Panel_3.FontSize = 16;app.Panel_3.Position = [1 176 640 247];% Create Label_4app.Label_4 = uilabel(app.Panel_3);app.Label_4.HorizontalAlignment = 'center';app.Label_4.Position = [13 197 113 22];app.Label_4.Text = '再分发多项式系数:';% Create UITable2_3app.UITable2_3 = uitable(app.Panel_3);app.UITable2_3.ColumnName = '';app.UITable2_3.RowName = {};app.UITable2_3.Position = [10 69 292 96];% Create UITable2_4app.UITable2_4 = uitable(app.Panel_3);app.UITable2_4.ColumnName = '';app.UITable2_4.RowName = {};app.UITable2_4.Position = [325 70 292 124];% Create CLabelapp.CLabel = uilabel(app.Panel_3);app.CLabel.HorizontalAlignment = 'center';app.CLabel.Position = [325 197 38 22];app.CLabel.Text = 'C矩阵';% Create CLabel_2app.CLabel_2 = uilabel(app.Panel_3);app.CLabel_2.HorizontalAlignment = 'center';app.CLabel_2.Position = [3 34 142 22];app.CLabel_2.Text = '每人计算的C值(子秘密值)';% Create UITable2_5app.UITable2_5 = uitable(app.Panel_3);app.UITable2_5.ColumnName = '';app.UITable2_5.RowName = {};app.UITable2_5.Position = [143 7 474 49];% Create ButtonGroup_3app.ButtonGroup_3 = uibuttongroup(app.Panel_3);app.ButtonGroup_3.SelectionChangedFcn = createCallbackFcn(app, @ButtonGroup_3SelectionChanged, true);app.ButtonGroup_3.Position = [10 164 292 30];% Create Button_9app.Button_9 = uiradiobutton(app.ButtonGroup_3);app.Button_9.Text = '自定义多项式系数';app.Button_9.Position = [11 3 118 22];app.Button_9.Value = true;% Create Button_10app.Button_10 = uiradiobutton(app.ButtonGroup_3);app.Button_10.Text = '随机生成';app.Button_10.Position = [198 4 70 22];% Create Button_11app.Button_11 = uibutton(app.Panel_3, 'push');app.Button_11.ButtonPushedFcn = createCallbackFcn(app, @Button_11Pushed, true);app.Button_11.FontSize = 10;app.Button_11.Position = [536 199 82 18];app.Button_11.Text = '确定计算';% Create Button_12app.Button_12 = uibutton(app.Panel_3, 'push');app.Button_12.ButtonPushedFcn = createCallbackFcn(app, @Button_12Pushed, true);app.Button_12.FontSize = 10;app.Button_12.Position = [37 7 82 18];app.Button_12.Text = '确定计算';% Create Panel_4app.Panel_4 = uipanel(app.UIFigure);app.Panel_4.TitlePosition = 'centertop';app.Panel_4.Title = '恢复';app.Panel_4.BackgroundColor = [0.9333 0.9137 0.9137];app.Panel_4.FontWeight = 'bold';app.Panel_4.FontSize = 16;app.Panel_4.Position = [1 1 640 176];% Create TextAreaapp.TextArea = uitextarea(app.Panel_4);app.TextArea.Editable = 'off';app.TextArea.Position = [325 14 293 86];% Create Button_8app.Button_8 = uibutton(app.Panel_4, 'push');app.Button_8.ButtonPushedFcn = createCallbackFcn(app, @Button_8Pushed, true);app.Button_8.Position = [517 117 100 25];app.Button_8.Text = '确定恢复';% Create Button_7app.Button_7 = uibutton(app.Panel_4, 'push');app.Button_7.ButtonPushedFcn = createCallbackFcn(app, @Button_7Pushed, true);app.Button_7.Position = [206 117 42 25];app.Button_7.Text = '添加';% Create EditFieldLabelapp.EditFieldLabel = uilabel(app.Panel_4);app.EditFieldLabel.HorizontalAlignment = 'right';app.EditFieldLabel.Position = [103 120 41 22];app.EditFieldLabel.Text = '秘密值';% Create iEditField2app.iEditField2 = uieditfield(app.Panel_4, 'numeric');app.iEditField2.Position = [148 120 40 22];% Create iEditFieldLabelapp.iEditFieldLabel = uilabel(app.Panel_4);app.iEditFieldLabel.HorizontalAlignment = 'right';app.iEditFieldLabel.Position = [20 120 32 22];app.iEditFieldLabel.Text = '第i人';% Create iEditFieldapp.iEditField = uieditfield(app.Panel_4, 'numeric');app.iEditField.Position = [59 120 40 22];% Create UITable3app.UITable3 = uitable(app.Panel_4);app.UITable3.ColumnName = {'第i人'; '第i人秘密值'};app.UITable3.RowName = {};app.UITable3.ColumnEditable = true;app.UITable3.Position = [8 11 288 92];% Create Button_14app.Button_14 = uibutton(app.Panel_4, 'push');app.Button_14.ButtonPushedFcn = createCallbackFcn(app, @Button_14Pushed, true);app.Button_14.Position = [254 116 42 26];app.Button_14.Text = '清空';% Create Button_13app.Button_13 = uibutton(app.UIFigure, 'push');app.Button_13.ButtonPushedFcn = createCallbackFcn(app, @Button_13Pushed, true);app.Button_13.BackgroundColor = [0 0.6 1];app.Button_13.FontColor = [1 1 1];app.Button_13.Position = [576 710 42 21];app.Button_13.Text = '清空';endendmethods (Access = public)% Construct appfunction app = SharingSecret% Create and configure componentscreateComponents(app)% Register the app with App DesignerregisterApp(app, app.UIFigure)if nargout == 0clear appendend% Code that executes before app deletionfunction delete(app)% Delete UIFigure when app is deleteddelete(app.UIFigure)endend
end

加法流程:
乘法流程:

(代码实现可能可以通过matlab的函数实现更简单的实现,自己实现和可视化是一天内现学的所以可能有些缺点,但是大致流程是这样的。代码包和生成的.exe文件上传在了我的资源里以及github(https://github.com/xuekema/shamirSecretSharing))

Shamir秘密共享机制(加法、乘法共享)Matlab可视化实现相关推荐

  1. 多任务学习,如何设计一个更好的参数共享机制?| AAAI 2020

    2019-12-26 05:44:43 作者 | 孙天祥 编辑 | 刘萍 原文标题:稀疏共享:当多任务学习遇见彩票假设 本文介绍了复旦大学邱锡鹏团队在AAAI 2020 上录用的一篇关于多任务学习的工 ...

  2. Additive secret sharing 加性秘密共享(加法,乘法,向量乘法)

    目录 前言 Additive secret sharing Secure addition Secure multiplication Secure vectorization 前言 本文前一部分主要 ...

  3. shamir秘密共享matlab程序,shamir 秘密共享代码

    早期的秘 密共享是由Shamir.¨和Blakley'纠于1979年分别提 出的,并分别给出了第一个(t,凡)门限秘密共享方 l LDPC 下面介绍LDPC的概念,编码及其译码. LDPC...... ...

  4. shamir秘密共享方案_Shamir秘密分享的初学者指南

    shamir秘密共享方案 An introduction to this privacy-preserving cryptographic technique and how Keyless is u ...

  5. Shamir秘密共享算法

    Shamir秘密共享算法 简介 秘密s被分成n份毫无相关的部分信息,每一部分信息称为一个子密钥,由一个参与者持有,只有至少拥有t份子密钥时才能恢复出秘密s,这种方案为(t, n)-秘密分割门限方案,t ...

  6. 记录我看的密码学方案中的技术,Shamir秘密共享,Schnorr零知识证明,EIGamal密码体制

    记录我看的论文中基于的技术,对他们进行大概介绍 Shamir 秘密共享方案 零知识证明 EIGamal密码体制 Shamir 秘密共享方案 1979年,Shamir提出的一个基于拉格朗日插值的(k,n ...

  7. Shamir 秘密共享方案和Feldman可验证的秘密共享方案

    常用的秘密共享方案 首先提出问题--平均工资问题 什么是秘密共享? Shamir秘密共享分案 算法流程 可验证秘密共享的提出 什么是计算安全?什么是无条件安全? Feldman可验证的秘密共享 安全多 ...

  8. Java实现Shamir秘密共享带注释

    最近在复现一篇联邦学习的安全聚合论文,需要用到Shamir秘密共享,就用Java实现了一下,有兴趣的可以看看. package com.duwei.crypto;import java.math.Bi ...

  9. shamir秘密共享 go语言实现

    算法原理参考:shamir 秘密共享 大素数p的选取,这里选取的是128bit大素数 prime, _ := rand.Prime(rand.Reader, 128) Share和Polynomial ...

最新文章

  1. 项目新的需求,网页的自适应交付/响应式交付 Responsive/Adaptive Delivery
  2. 项目管理5大过程组,42个过程一句话讲解
  3. 表格嵌套—JavaWeb学习之路Day1
  4. Not using the local TSLint version found for XXX
  5. idea package自动生成_懒人必备,IntelliJ IDEA中代码一键生成
  6. django+bootstrap_Django自学教程PDF高清文档下载
  7. Android之使用ViewPager实现图片展示(最简单的)
  8. java代理机制简单实现
  9. java 类加载的过程
  10. layui 加载中_宝骏360促销中,最高直降0.91万,新车全国4.77万起!
  11. 创建FTP和Web虚拟目录的方法!
  12. 代码版本管理软件Git的优势和用法
  13. 或非门sr锁存器_d锁存器与sr锁存器的区别
  14. 别再售卖 5块钱 的 Win10 激活码了,后果很严重
  15. python 批量去掉语音中的静音段
  16. 商务统计_4 用图表演示数据 - 频数分布
  17. 单目标跟踪——个人笔记
  18. p1468 Party Lamps
  19. JS 改变HTML样式
  20. 《临时笔记》一些深度学习中的英文术语的纪录

热门文章

  1. Android 1000实例代码集结(三 )
  2. ubantu18中下载安装搜狗输入法详细步骤
  3. 真实物理机安装centos7,只有lo,没有其他网卡
  4. 读书百客:《无题》鉴赏
  5. 趋势科技PC-Cillin 2012试飞大赏开始啦
  6. 数据中心网络架构 — 云网一体化数据中心网络 — 大规模数据中心组网技术
  7. 计算器小程序技术要求C语言,小程序简单计算器实现思路
  8. Linux--无进程却显示占用显存,GPU显存释放方法
  9. 南理工计算机科学与工程学院好吗,哈尔滨工程大学和南京理工大学,两所实力相当的高校,更喜欢哪个...
  10. 人生啊,就是经常要用无数的格言警句来督促自己不断进步!