问题描述
这里java的方法,对方发过来的,想改成C#的来实现publicclassHmacSha512Coder{privatestaticfinalStringalgorithm="HmacSHA512";privatebyte[]keySeeds;privatefinalCharsetcharset=Charset.forName("UTF-8");publicvoidsetKeySeeds(StringkeeySeedsString){this.keySeeds=newBase64Codec().encrypt(keeySeedsString);}publicStringgenerateHMAC(Stringdatas)throwsException{finalSecretKeySpecsecretKey=newSecretKeySpec(keySeeds,algorithm);Macmac=Mac.getInstance(algorithm);mac.init(secretKey);byte[]macData=mac.doFinal(datas.getBytes(charset));byte[]hashed=newHex().encode(macData);returnnewString(hashed,charset);}staticMap<String,HmacSha512Coder>hmacSha512CoderMap=newHashMap<String,HmacSha512Coder>();publicstaticHmacSha512CodergetAESCBCCoderObject(StringkeySeeds){if(null==hmacSha512CoderMap.get(keySeeds)){HmacSha512CoderhmacSha512Coder=newHmacSha512Coder();hmacSha512Coder.setKeySeeds(keySeeds);hmacSha512CoderMap.put(keySeeds,hmacSha512Coder);}returnhmacSha512CoderMap.get(keySeeds);}
解决方案
解决方案二:
非对称加密算法HmacSHA512HashMap其实就是Dictionary
解决方案三:
finalSecretKeySpecsecretKey=newSecretKeySpec(keySeeds,algorithm);这句在c#里是那个,请指点一下
解决方案四:
SHA512sha512=newSHA512Managed();//algorithmmacData=sha512.ComputeHash(keySeeds);
解决方案五:
引用2楼kuangood的回复:
finalSecretKeySpecsecretKey=newSecretKeySpec(keySeeds,algorithm);这句在c#里是那个,请指点一下
Java里面final关键字比较模糊,大致是“不可改变”,要看修饰的是什么修饰class表示类型不可再继承,像你上面那样修饰成员就表示只读,相当于C#中的readonly像这种问题,你不应该拿出来问
解决方案六:
SecretKeySpec这个关键字,在c#里是用那个,
解决方案七:
一楼的链接你没仔细看,.Net中只需要HMACSHA512hmacsha512=newHMACSHA512(keySeeds);就行了,你就可以用hmacsha512.ComputeHash(inStream);对数据进行加密了,不需要再去用什么SecretKeySpec
解决方案八:
C#有HASH
解决方案九:
有谁能够帮我写完整一下这个加密的用c#来完成