导航:首页 > 源码编译 > mac算法代码

mac算法代码

发布时间:2022-07-18 10:48:40

⑴ 用LUA做一个MAC地址加一的算法

可以先转换为十进制进行加减操作后再转换回十六进制即可


封装的两个函数:

1、string.split用于分割字符串,传入要分割的字符串和分隔符,返回分割后的table


2、add_mac_address用于计算mac地址增加后的值,传入要计算的mac地址和步进,返回计算结果

python">(注意:未考虑超过255后进位问题,留着你自己思考吧,O(∩_∩)O~)


具体代码如下:


functionstring.split(str,delimiter)
ifstr==nilorstr==''ordelimiter==nilthen
returnnil
end
localresult={}
formatchin(str..delimiter):gmatch("(.-)"..delimiter)do
table.insert(result,match)
end
returnresult
end
functionadd_mac_address(mac_addr,step)
ifmac_addr==nilorstring.find(mac_addr,':')==nilor#string.split(mac_addr,':')~=6ortonumber(step)==nilthen
returnnil
end
localmac_addr_tb=string.split(mac_addr,':')
localmac_addr_new_tb={}
fork,vinpairs(mac_addr_tb)do
ifk==6then
dec_num=tonumber('0x'..mac_addr_tb[6])+tonumber(step)
else
dec_num=tonumber('0x'..mac_addr_tb[k])
end
mac_addr_new_tb[k]=string.format("%02x",tostring(dec_num))
end
returntable.concat(mac_addr_new_tb,':')
end
print(add_mac_address('14:9f:e8:5c:06:0d','1'))

⑵ MAC算法的简介

简介
MAC算法原理(以直联银联pos和POS中心通讯为例)。
a) 将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC
ELEMEMENT BLOCK (MAB)。
b) 对MAB,按每8个字节做异或(不管信息中的字符格式),如果最后不满8个字
节,则添加“0X00”。

⑶ 急求一个基于aes算法的cbc-mac 的完整c++程序

之前在项目上用到AES256加密解密算法,刚开始在java端加密解密都没有问题,在iOS端加密解密也没有问题。但是奇怪的是在java端加密后的文件在iOS端无法正确解密打开,然后简单测试了一下,发现在java端和iOS端采用相同明文,相同密钥加密后的密文不一样!上网查了资料后发现iOS中AES加密算法采用的填充是PKCS7Padding,而java不支持PKCS7Padding,只支持PKCS5Padding。我们知道加密算法由算法+模式+填充组成,所以这两者不同的填充算法导致相同明文相同密钥加密后出现密文不一致的情况。那么我们需要在java中用PKCS7Padding来填充,这样就可以和iOS端填充算法一致了。要实现在java端用PKCS7Padding填充,需要用到bouncycastle组件来实现,下面我会提供该包的下载。啰嗦了一大堆,下面是一个简单的测试,上代码!001packagecom.encrypt.file;002003004importjava.io.UnsupportedEncodingException;005importjava.security.Key;006importjava.security.Security;007008importjavax.crypto.Cipher;009importjavax.crypto.SecretKey;010importjavax.crypto.spec.SecretKeySpec;{013014/**015*密钥算法016*java6支持56位密钥,bouncycastle支持64位017**/018publicstaticfinalStringKEY_ALGORITHM="AES";019020/**021*加密/解密算法/工作模式/填充方式022*023*JAVA6支持PKCS5PADDING填充方式024*Bouncycastle支持PKCS7Padding填充方式025**/_ALGORITHM="AES/ECB/PKCS7Padding";027028/**029*030*生成密钥,java6只支持56位密钥,bouncycastle支持64位密钥031*@returnbyte[]二进制密钥032**/033publicstaticbyte[]initkey()throwsException{034035////实例化密钥生成器036//Security.addProvider(neworg.bouncycastle.jce.provider.BouncyCastleProvider());037//KeyGeneratorkg=KeyGenerator.getInstance(KEY_ALGORITHM,"BC");038////初始化密钥生成器,AES要求密钥长度为128位、192位、256位039////kg.init(256);040//kg.init(128);041////生成密钥042//SecretKeysecretKey=kg.generateKey();043////获取二进制密钥编码形式044//returnsecretKey.getEncoded();045//为了便于测试,这里我把key写死了,如果大家需要自动生成,可用上面注释掉的代码046returnnewbyte[]{0x08,0x08,0x04,0x0b,0x02,0x0f,0x0b,0x0c,0470x01,0x03,0x09,0x07,0x0c,0x03,0x07,0x0a,0x04,0x0f,0480x06,0x0f,0x0e,0x09,0x05,0x01,0x0a,0x0a,0x01,0x09,0490x06,0x07,0x09,0x0d};050}051052/**053*转换密钥054*@paramkey二进制密钥055*@returnKey密钥056**/057publicstaticKeytoKey(byte[]key)throwsException{058//实例化DES密钥059//生成密钥060SecretKeysecretKey=newSecretKeySpec(key,KEY_ALGORITHM);061returnsecretKey;062}063064/**065*加密数据066*@paramdata待加密数据067*@paramkey密钥068*@returnbyte[]加密后的数据069**/070publicstaticbyte[]encrypt(byte[]data,byte[]key)throwsException{071//还原密钥072Keyk=toKey(key);073/**074*实例化075*使用PKCS7PADDING填充方式,按如下方式实现,就是调用bouncycastle组件实现076*Cipher.getInstance(CIPHER_ALGORITHM,"BC")077*/078Security.addProvider(neworg.bouncycastle.jce.provider.BouncyCastleProvider());079Ciphercipher=Cipher.getInstance(CIPHER_ALGORITHM,"BC");080//初始化,设置为加密模式081cipher.init(Cipher.ENCRYPT_MODE,k);082//执行操作083returncipher.doFinal(data);084}085/**086*解密数据087*@paramdata待解密数据088*@paramkey密钥089*@returnbyte[]解密后的数据090**/091publicstaticbyte[]decrypt(byte[]data,byte[]key)throwsException{092//欢迎密钥093Keyk=toKey(key);094/**095*实例化096*使用PKCS7PADDING填充方式,按如下方式实现,就是调用bouncycastle组件实现097*Cipher.getInstance(CIPHER_ALGORITHM,"BC")098*/099Ciphercipher=Cipher.getInstance(CIPHER_ALGORITHM);100//初始化,设置为解密模式101cipher.init(Cipher.DECRYPT_MODE,k);102//执行操作103returncipher.doFinal(data);104}105/**106*@paramargs107*@*@throwsException109*/110publicstaticvoidmain(String[]args){111112Stringstr="AES";113System.out.println("原文:"+str);114115//初始化密钥116byte[]key;117try{118key=AES256Encryption.initkey();119System.out.print("密钥:");120for(inti=0;i

⑷ MAC算法的介绍

MAC算法 (Message Authentication Codes) 带秘密密钥的Hash函数:消息的散列值由只有通信双方知道的秘密密钥K来控制。此时Hash值称作MAC。

⑸ 求银联8583报文里mac 的c代码

uservo user=(uservo)voinfo;
String username=user.getUsername();
String password=user.getPassword();
System.out.println("your username is "+username);
System.out.println("your password is "+password);
List list = new ArrayList();

⑹ MACs是什么意思,前提是和密码学相关的

MAC(Message Authentication Code 消息谁码算法)

MAC算法结合了MD5和SHA算法的优势, 并加入了密钥的支持, 是一种更为安全的消息摘要算法.

1. 环境

jdk1.6
commons-codec-1.4.jar

2. 代码

import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Hex;

public class MACCipher {

public static byte[] initHmacMD5Key() throws Exception{
// 初始化KeyGenerator
KeyGenerator kg = KeyGenerator.getInstance("HmacMD5");
//产生密钥
SecretKey secretKey = kg.generateKey();
//获得密钥
return secretKey.getEncoded();
}

public static byte[] encodeHmacMD5(byte[] data, byte[] key)throws Exception{
// 还原密钥
SecretKey secretKey = new SecretKeySpec(key, "HmacMD5");
// 实例化Mac
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
// 初始化Mac
mac.init(secretKey);
// 执行消息摘要
return mac.doFinal(data);
}

public static String hmacmd5Hex(byte[] data, byte[] key)throws Exception{
return Hex.encodeHexString(encodeHmacMD5(data, key));
}

public static byte[] initHmacSHA512Key()throws Exception{
// 初始化KeyGenerator
KeyGenerator kg = KeyGenerator.getInstance("HmacSHA512");
//产生密钥
SecretKey secretKey = kg.generateKey();
//获得密钥
return secretKey.getEncoded();
}

public static byte[] encodeHmacSHA512(byte[] data, byte[] key)throws Exception{
// 还原密钥
SecretKey secretKey = new SecretKeySpec(key, "HmacSHA512");
// 实例化Mac
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
// 初始化Mac
mac.init(secretKey);
// 执行消息摘要
return mac.doFinal(data);
}

public static String hmacsha512Hex(byte[] data, byte[] key)throws Exception{
return Hex.encodeHexString(encodeHmacSHA512(data, key));
}
}

3. 测试代码

String macmd5Data = MACCipher.hmacmd5Hex("HmacMD5编码".getBytes(), MACCipher.initHmacMD5Key());
System.out.println(macmd5Data);
String macsha512Data = MACCipher.hmacsha512Hex("HmacSHA512编码".getBytes(), MACCipher.initHmacSHA512Key());
System.out.println(macsha512Data);

⑺ MAC的算法过程

改进获取网关MAC地址算法,在遭受攻击时仍然可以获取正确的网关MAC地址;解决Vista系统下可能出现误报对外攻击的问题;解决追踪攻击者IP时可能出现误差的问题;解决安装过程中出现3001错误的问题。
ARP防火墙采用内核层拦截技术和主动防御技术,几大功能模块(拦截ARP攻击/拦截IP冲突/DoS攻击抑制/安全模式/ARP数据分析/监测ARP缓存/主动防御/追踪攻击源/查杀ARP病毒/系统时间保护/IE首页保护/ARP缓存保护/自身进程保护/智能防御)互相配合,可彻底解决ARP相关问题,扼杀DoS攻击源

⑻ MAC算法的示例

MAB = M1 M2 M3 M4
其中:
M1 = MS11 MS12 MS13 MS14 MS15 MS16 MS17 MS18
M2 = MS21 MS22 MS23 MS24 MS25 MS26 MS27 MS28
M3 = MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38
M4 = MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48按如下规则进行异或运算:
MS11 MS12 MS13 MS14 MS15 MS16 MS17 MS18
XOR) MS21 MS22 MS23 MS24 MS25 MS26 MS27 MS28
---------------------------------------------------
TEMP BLOCK1 = TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18
然后,进行下一步的运算:
TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18
XOR) MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38
---------------------------------------------------
TEMP BLOCK2 = TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28
再进行下一步的运算:
TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28
XOR) MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48
---------------------------------------------------
RESULT BLOCK = TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38
c) 将异或运算后的最后8个字节(RESULT BLOCK)转换成16 个HEXDECIMAL:
RESULT BLOCK = TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38
= TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342 ||
TM351 TM352 TM361 TM362 TM371 TM372 TM381 TM382
d) 取前8 个字节用MAK加密:
ENC BLOCK1 = eMAK(TM311 TM312 TM321 TM322 TM331 TM332 TM341 TM342)
= EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18
e) 将加密后的结果与后8 个字节异或:
EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18
XOR) TM351 TM352 TM361 TM362 TM371 TM372 TM381 TM382
------------------------------------------------------------
TEMP BLOCK= TE11 TE12 TE13 TE14 TE15 TE16 TE17 TE18
f) 用异或的结果TEMP BLOCK 再进行一次单倍长密钥算法运算。
ENC BLOCK2 = eMAK(TE11 TE12 TE13 TE14 TE15 TE16 TE17 TE18)
= EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28
g) 将运算后的结果(ENC BLOCK2)转换成16 个HEXDECIMAL:
ENC BLOCK2 = EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28
= EM211 EM212 EM221 EM222 EM231 EM232 EM241 EM242 ||
EM251 EM252 EM261 EM262 EM271 EM272 EM281 EM282
示例 :
ENC RESULT= %H84, %H56, %HB1, %HCD, %H5A, %H3F, %H84, %H84
转换成16 个HEXDECIMAL:
“8456B1CD5A3F8484”
h) 取前8个字节作为MAC值。
取”8456B1CD”为MAC值。

⑼ 请教开发过CPU卡读写器的大神,关于MAC算法的问题

如果是标准PBOC的话:

密钥:
要算mac的数据:038bb34ab9715b57
初始向量:B6 DC 6F 0B 74 4E E4 EA
计算mac结果: 75 AF F2 A4
以上采用的是3DES算法。

⑽ 什么是MAC算法

一种固定帧长的EPON MAC算法

Design of MAC of Fixed Frame Size of EPON

王利村 邱昆 王东 王秀妮 陈凯

摘 要:提出了一种固定大小帧结构的EPON MAC协议,采用固定的帧长,提高了以太网交换机速率.将一帧周期分成三段,光网络单元不仅报告队列长度信息,而且报告帧到达分布信息,降低了高优先级业务时延抖动,授权采取高优先级优先授权的原则,降低了高优先级业务的接入时延,满足了对时延和时延抖动敏感语音业务的要求.
关键词:动态带宽分配;时延;时延抖动;媒质接入控制
分类号:TN915.6 文献标识码:A

基金项目:教育部优秀青年教师教学科研奖励计划基金资助项目
作者简介:王利村(1979-),男,硕士生,主要从事光接入网方面的研究.
作者单位:王利村(电子科技大学,宽带光纤传输与通信网技术教育部重点实验室,成都,610054)
邱昆(电子科技大学,宽带光纤传输与通信网技术教育部重点实验室,成都,610054)
王东(电子科技大学,宽带光纤传输与通信网技术教育部重点实验室,成都,610054)
王秀妮(电子科技大学,宽带光纤传输与通信网技术教育部重点实验室,成都,610054)
陈凯(电子科技大学,宽带光纤传输与通信网技术教育部重点实验室,成都,610054)

参考文献:

〔1〕Kramer G, Pesavento G. Ethernet passive optical network (EPON): building a next-generation optical access network[J]. Communications Magazine IEEE, 2002, 40(2): 66-73
〔2〕钟瑾,张家数.基于固定长度的EPON帧结构和MAC协议设计[J].光通信技术,2003,27(9):36-38
〔3〕曾清海,邱昆.APON上行接入的研究[J].电子科技大学学报,2000,29(4):351-355
〔4〕Angelopoulos J D, Boukis G C, Venieris I S. Delay priorities enhance utilisation of ATM PON access systems[J].Computer Communications, 1997, 11(20): 937-949
〔5〕乔耀军,管克俭,于晓映,等.基于ATM的无源光网络的煤质接入控制(MAC)协议及其性能分析[J].高技术通讯,2000,10(5):27-31

收稿日期:2004年6月7日

出版日期:2004年12月20日

阅读全文

与mac算法代码相关的资料

热点内容
喷油螺杆制冷压缩机 浏览:576
python员工信息登记表 浏览:375
高中美术pdf 浏览:157
java实现排列 浏览:511
javavector的用法 浏览:978
osi实现加密的三层 浏览:230
大众宝来原厂中控如何安装app 浏览:910
linux内核根文件系统 浏览:240
3d的命令面板不见了 浏览:521
武汉理工大学服务器ip地址 浏览:143
亚马逊云服务器登录 浏览:521
安卓手机如何进行文件处理 浏览:69
mysql执行系统命令 浏览:925
php支持curlhttps 浏览:142
新预算法责任 浏览:443
服务器如何处理5万人同时在线 浏览:247
哈夫曼编码数据压缩 浏览:424
锁定服务器是什么意思 浏览:382
场景检测算法 浏览:616
解压手机软件触屏 浏览:347