我是靠谱客的博主 贤惠海燕,最近开发中收集的这篇文章主要介绍matlab绘制散列,这是一个hash函数在matlab中的编程,希望对大家有用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

function h = hash(inp,meth)

% HASH - Convert an input variable into a message digest using any of

%        several common hash algorithms

%

% USAGE: h = hash(inp,'meth')

%

% inp  = input variable, of any of the following classes:

%        char, uint8, logical, double, single, int8, uint8,

%        int16, uint16, int32, uint32, int64, uint64

% h    = hash digest output, in hexadecimal notation

% meth = hash algorithm, which is one of the following:

%        MD2, MD5, SHA-1, SHA-256, SHA-384, or SHA-512

%

% NOTES: (1) If the input is a string or uint8 variable, it is hashed

%            as usual for a byte stream. Other classes are converted into

%            their byte-stream values. In other words, the hash of the

%            following will be identical:

%                     'abc'

%                     uint8('abc')

%                     char([97 98 99])

%            The hash of the follwing will be different from the above,

%            because class "double" uses eight byte elements:

%                     double('abc')

%                     [97 98 99]

%            You can avoid this issue by making sure that your inputs

%            are strings or uint8 arrays.

%        (2) The name of the hash algorithm may be specified in lowercase

%            and/or without the hyphen, if desired. For example,

%            h=hash('my text to hash','sha256');

%        (3) Carefully tested, but no warranty. Use at your own risk.

%        (4) Michael Kleder, Nov 2005

%

% EXAMPLE:

%

% algs={'MD2','MD5','SHA-1','SHA-256','SHA-384','SHA-512'};

% for n=1:6

%     h=hash('my sample text',algs{n});

%     disp([algs{n} ' (' num2str(length(h)*4) ' bits):'])

%     disp(h)

% end

inp=inp(:);

% convert strings and logicals into uint8 format

if ischar(inp) || islogical(inp)

inp=uint8(inp);

else % convert everything else into uint8 format without loss of data

inp=typecast(inp,'uint8');

end

% verify hash method, with some syntactical forgiveness:

meth=upper(meth);

switch meth

case 'SHA1'

meth='SHA-1';

case 'SHA256'

meth='SHA-256';

case 'SHA384'

meth='SHA-384';

case 'SHA512'

meth='SHA-512';

otherwise

end

algs={'MD2','MD5','SHA-1','SHA-256','SHA-384','SHA-512'};

if isempty(strmatch(meth,algs,'exact'))

error(['Hash algorithm must be ' ...

'MD2, MD5, SHA-1, SHA-256, SHA-384, or SHA-512']);

end

% create hash

x=java.security.MessageDigest.getInstance(meth);

x.update(inp);

h=typecast(x.digest,'uint8');

h=dec2hex(h)';

if(size(h,1))==1 % remote possibility: all hash bytes  128, so pad:

h=[repmat('0',[1 size(h,2)]);h];

end

h=lower(h(:)');

clear x

return

这个里面有点小错误,还希望高手能给予一点帮助,改正过来.

最后

以上就是贤惠海燕为你收集整理的matlab绘制散列,这是一个hash函数在matlab中的编程,希望对大家有用的全部内容,希望文章能够帮你解决matlab绘制散列,这是一个hash函数在matlab中的编程,希望对大家有用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部