import java.security.* makeDigest = {String msg, int loops = 1, long t1 = (new Date()).getTime(), double q1 = Math.random() -> MessageDigest md = MessageDigest.getInstance("SHA") (Math.abs(loops) ?: 1).times { byte[] randm = { ByteArrayOutputStream byteOut = new ByteArrayOutputStream() DataOutputStream dataOut = new DataOutputStream(byteOut) dataOut.writeLong(t1) dataOut.writeDouble(q1) return byteOut.toByteArray() }() md.update(randm) md.update(msg.getBytes()) } return md.digest() } String user = "admin" String password = "s3cr3t" int loops = 1 byte[] hash1 = makeDigest(user+password, loops, 0, 0) // not randomized byte[] hash2 = makeDigest(user+password) // randomized assert hash1 != hash2 println "$hash1\n$hash2"
Thursday, January 26, 2012
Simple SHA Digest/Hash
Wednesday, January 25, 2012
File/Directory Traverse
//helpful file properties: http://groovy.codehaus.org/JN2015-Files
import groovy.io.FileType def walkFiles = {filepath, filterOnly, onFind, onEnd = {} -> try { File f = new File(filepath) f.traverse([type:FileType.FILES, nameFilter:filterOnly], onFind) onEnd() } catch (FileNotFoundException e) { println "ERROR: invalid file/directory"} } def pf = { file -> if (file.name.contains("a")) println file.name } walkFiles("C:\\123", ~/.*\.ico/, pf)
Tuesday, January 24, 2012
FastMap and IdentityHashMap
@Grapes( @Grab(group='javolution', module='javolution', version='5.5.1') ) import javolution.util.FastMap // also FastSet, FastList Map labels1 = new FastMap().shared() Map labels2 = [:] as IdentityHashMap // unsorted 100.times { i -> labels1[String.valueOf(i)] = i*i labels2[String.valueOf(i)] = i*i } assert labels1 == labels2.sort()
see http://javolution.org/target/site/apidocs/javolution/util/FastMap.html
Fibonacci
/** * Fibonacci series: * the sum of two elements defines the next */ int LIMIT = 1000 (a,b) = [0,1] while (b < LIMIT) { print "$b " (a,b) = [b, a+b] }
(source)
Subscribe to:
Posts (Atom)