Hash Value tool extension (using HMAC-SHA1, HMAC-SHA256 or HMAC-SHA512)

This is my first extension, so I’m sorry for any errors or bugs.

This is the tool: image

It is very simple, however, I did dozens of tests with the three HMAC methods (SHA1, SHA256 and SHA512) and it worked perfectly.

Its inputs are Strings, and its output too: it is converted to a String in Hexadecimal format (I didn’t use Base64).

image

I looked for an extension that had these functions, but I couldn’t find it anywhere. So, I decided to create my own extension and now it’s there for everyone.

Any questions just ask me here on the forum.

com.extensions.hmacsha.aix (8.2 KB)

10 Likes

What can i use it for , I have no knowledge about this

1 Like

Many APIs require this type of encryption. Example: bitcoin brokers, banks, and more.

1 Like

A small suggestion:
Do not use all caps in Method names.

2 Likes

thank you for your contribution.

Please follow the naming conventions, which is UpperCamelCase for property, method and event names (i.e. the first letter should be a capital letter) and lowerCamelCase for parameter names, no underscores .
naming

Also you might want to read this


to understand, that HMAC is not about encryption, it is hash based message authentication code, so your extension is not really an encryption tool…
EDIT: I now updated the subject into “Hash Value tool extension” and I hope, you are ok with that…

Hashing vs. Encryption algorithms

There is a fundamental difference between Hashing and Encryption algorithms, see this stackoverflow answer: Hashing is one way. You can not get your data/string from a hash code. Encryption is 2 way - you can decrypt again the encrypted string if you have the key with you.

Taifun

2 Likes

thank you for your contribution.

I’m gonna fix that.

@camargopellanda15

When I use this extension my project cannot even compile

yail line 5860: caught exception in inliner for # - java.lang.RuntimeException: no such class: com.extensions.hmac.HMAC

gnu.bytecode.ObjectType.getReflectClass(ObjectType.java:179)
gnu.bytecode.ClassType.getModifiers(ClassType.java:103)
gnu.bytecode.ClassType.isInterface(ClassType.java:471)
gnu.expr.InlineCalls.checkType(InlineCalls.java:56)
gnu.expr.InlineCalls.visit(InlineCalls.java:49)
gnu.expr.InlineCalls.visitSetExpValue(InlineCalls.java:363)
gnu.expr.InlineCalls.visitSetExpValue(InlineCalls.java:28)
gnu.expr.ExpVisitor.visitSetExp(ExpVisitor.java:114)
gnu.expr.InlineCalls.visitSetExp(InlineCalls.java:369)
gnu.expr.InlineCalls.visitSetExp(InlineCalls.java:28)
gnu.expr.SetExp.visit(SetExp.java:406)
gnu.expr.ExpVisitor.visit(ExpVisitor.java:55)
gnu.expr.InlineCalls.visit(InlineCalls.java:46)
gnu.expr.InlineCalls.visitBeginExp(InlineCalls.java:272)
gnu.expr.InlineCalls.visitBeginExp(InlineCalls.java:28)
gnu.expr.BeginExp.visit(BeginExp.java:156)
gnu.expr.ExpVisitor.visit(ExpVisitor.java:51)
gnu.expr.InlineCalls.visit(InlineCalls.java:46)
gnu.expr.InlineCalls.visit(InlineCalls.java:28)
gnu.expr.ExpVisitor.visitAndUpdate(ExpVisitor.java:161)
gnu.expr.ExpVisitor.visitExps(ExpVisitor.java:175)
gnu.expr.ApplyExp.visitArgs(ApplyExp.java:415)
gnu.kawa.functions.CompileMisc.validateApplyAppendValues(CompileMisc.java:139)
sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
gnu.expr.InlineCalls.maybeInline(InlineCalls.java:467)
gnu.expr.QuoteExp.validateApply(QuoteExp.java:150)
gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:119)
gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:28)
gnu.expr.ApplyExp.visit(ApplyExp.java:410)
gnu.expr.ExpVisitor.visit(ExpVisitor.java:55)
gnu.expr.InlineCalls.visit(InlineCalls.java:46)
gnu.expr.InlineCalls.visit(InlineCalls.java:28)
gnu.expr.LambdaExp.visitChildrenOnly(LambdaExp.java:1664)
gnu.expr.LambdaExp.visitChildren(LambdaExp.java:1651)
gnu.expr.InlineCalls.visitScopeExp(InlineCalls.java:279)
gnu.expr.InlineCalls.visitLambdaExp(InlineCalls.java:349)
gnu.expr.InlineCalls.visitLambdaExp(InlineCalls.java:28)
gnu.expr.ExpVisitor.visitModuleExp(ExpVisitor.java:103)
gnu.expr.ModuleExp.visit(ModuleExp.java:482)
gnu.expr.ExpVisitor.visit(ExpVisitor.java:51)
gnu.expr.InlineCalls.visit(InlineCalls.java:46)
gnu.expr.InlineCalls.inlineCalls(InlineCalls.java:33)
gnu.expr.Compilation.walkModule(Compilation.java:994)
gnu.expr.Compilation.process(Compilation.java:1965)
gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:330)
gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:315)
gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:315)
gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:315)
kawa.repl.compileFiles(repl.java:783)
kawa.repl.processArgs(repl.java:412)
kawa.repl.main(repl.java:827)
Kawa compile time: 2.34 seconds

Please publish the photo of part of your app where the extension is being used. REMEMBER TO HIDE SECRET INFORMATION.

I performed several tests again, and for me it’s working perfectly.

Anyway, I’ve already updated the extension and fixed some variables standardization. Try again with this: com.extensions.hmacsha.aix (8.2 KB)

@camargopellanda15 allow me to retry. Hope the extension is not limited with the android version to be used?