Functions

func digest<T>(T, Array<Byte>) where T <: Digest

public func digest<T>(algorithm: T, data: Array<Byte>): Array<Byte> where T <: Digest

Description: Provides the digest generic function to perform digest operation using a specified digest algorithm.

Parameters:

  • algorithm: T: specific digest algorithm
  • data: Array<Byte>: data for which digest operation is to be performed

Returns:

Examples:

import std.crypto.digest.*

main() {
    let data: Array<Byte> = [1, 2, 3, 4, 5]
    let mydigest = MyDigest()
    let digestBytes = digest<MyDigest>(mydigest, data)
    println(digestBytes)
}

// Customize the digest.
class MyDigest <: Digest {
    public prop size: Int64 {
        get() { 0 }
    }
    public prop blockSize: Int64 {
        get() { 0 }
    }
    public prop algorithm: String {
        get() { "" }
    }
    public func write(buffer: Array<Byte>): Unit { println("buffer = ${buffer}") }
    public func finish(to!: Array<Byte>): Unit { println("to = ${to}") }
    public func finish(): Array<Byte> { [3,2,1] }
    public func reset(): Unit {}
}

Results:

buffer = [1, 2, 3, 4, 5]
[3, 2, 1]

func digest<T>(T, String) where T <: Digest (deprecated)

public func digest<T>(algorithm: T, data: String): Array<Byte> where T <: Digest

Description: Provides the digest generic function to perform digest operation using a specified digest algorithm.

NOTE

This function will be deprecated in future releases and digest<T>(T, Array<Byte>) where T <: Digest will be used instead.

Parameters:

  • algorithm: T: specific digest algorithm
  • data: String: data for which digest operation is to be performed

Returns:

func digest<T>(T, InputStream) where T <: Digest

public func digest<T>(algorithm: T, input: InputStream): Array<Byte> where T <: Digest

Description: Provides the digest generic function to perform digest operation on the data in InputStream using a specified digest algorithm.

Parameters:

  • algorithm: T: specific digest algorithm
  • input: InputStream: InputStream for which digest operation is to be performed

Returns:

Examples:

import std.crypto.digest.*
import std.io.*

main() {
    /* Convert the original byte array data into the input stream BufferedInputStream. */
    let data: Array<Byte> = [1, 2, 3, 4, 5]
    let byteBuffer = ByteBuffer(data)
    let bufferedInputStream = BufferedInputStream(byteBuffer)
    let mydigest = MyDigest()
    let digestBytes = digest<MyDigest>(mydigest, bufferedInputStream)
    println(digestBytes)
}

// Customize the digest.
class MyDigest <: Digest {
    public prop size: Int64 {
        get() { 0 }
    }
    public prop blockSize: Int64 {
        get() { 2 }
    }
    public prop algorithm: String {
        get() { "" }
    }
    public func write(buffer: Array<Byte>): Unit { println("buffer = ${buffer}") }
    public func finish(to!: Array<Byte>): Unit { println("to = ${to}") }
    public func finish(): Array<Byte> { [3,2,1] }
    public func reset(): Unit {}
}

Results:

buffer = [1, 2]
buffer = [3, 4]
buffer = [5]
[3, 2, 1]