00e35bed创建于 2024年7月18日历史提交
// EXEC: cjc %import-path %L %l %f
// EXEC: ./main

import io4cj.*
import std.posix.*
import std.io.*
import std.time.*
import io4cj.*

main () {
    var source: Buffer = Buffer()
    var sink: Buffer = Buffer()
    let hashingSource: HashingSource = HashingSource.md5(source)
    source.writeUtf8("helloworld")
    let result: Int64 = hashingSource.read(sink, 0x7fffffffffffffff)
    hashingSource.readMD5()
    try{
        let hs1 = hashingSource.isClosed()
    }catch(e: Exception) {
        e.toString()
    }
    let a: String = hashingSource.hash()
    if(result != 10){
        return 2
    }
    if(a != "fc5e038d38a57032085441e7fe7010b0") {
        return 1
    }

    //sha1 algorithm
    var sourcesha1: Buffer = Buffer()
    var sinksha1: Buffer = Buffer()
    let hashingSourcesha1: HashingSource = HashingSource.sha1(sourcesha1)
    sourcesha1.writeUtf8("abc")
    let resultsha1: Int64 = hashingSourcesha1.read(sinksha1, 0x7fffffffffffffff)
    hashingSourcesha1.readSHA1()
    let b: String = hashingSourcesha1.hash()
    if(resultsha1 != 3){
        return 2
    }
    if(b != "a9993e364706816aba3e25717850c26c9cd0d89d") {
        return 1
    }

    //sha256 algorithm
    var sourcesha256: Buffer = Buffer()
    var sinksha256: Buffer = Buffer()
    let hashingSourcesha256: HashingSource = HashingSource.sha256(sourcesha256)
    sourcesha256.writeUtf8("abc")
    let resultsha256: Int64 = hashingSourcesha256.read(sinksha256, 0x7fffffffffffffff)
    hashingSourcesha256.readSHA256()
    let c: String = hashingSourcesha256.hash()
    if(resultsha256 != 3){
        return 2
    }
    if(c != "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") {
        return 1
    }
   
    return 0
}