zoukankan      html  css  js  c++  java
  • Symbian计算MD5(转)

    Symbian计算MD5

    2010年03月25日, 18:16

    MD5 HexDigest for Symbian看到的代码

    LOCAL_C HBufC8* Md5HexDigestLC(const TDes8& aString)
    {
        CMD5* md5 = CMD5::NewL();
        CleanupStack::PushL(md5);

        TPtrC8 hashedSig(md5->Hash(aString));

        HBufC8* buf = HBufC8::NewL(hashedSig.Length() * 2);
        TPtr8 bufPtr = buf->Des();

        for(TInt i=0; i< hashedSig.Length(); i++)
        {
            bufPtr.AppendFormat(_L8(“%+02x”),hashedSig[i]);
        }
        CleanupStack::PopAndDestroy(md5);
        CleanupStack::PushL(buf);
        return buf;
    }

    改成更简单的
    LOCAL_C HBufC8* DoMD5(const TDes8& aString)
    {
        CMD5* MD5 = CMD5::NewL();

        CleanupStack::PushL(MD5);
        HBufC8 *HashSigned=(MD5->Hash(aFileName)).AllocL();
        //TPtrC8 bytes = md5->Hash(aSource);   
        CleanupStack::PopAndDestroy(MD5);

        return HashSigned;
    }

    注意:
    CMD5包含头文件hash.h,并需要链接hash.lib

    LOCAL_C void Md5HexDigestLC(const TDes8& aString)
    {
        CMD5* md5 = CMD5::NewL();
        CleanupStack::PushL(md5);

        TPtrC8 hashedSig = md5->Hash(aString);

        CleanupStack::PopAndDestroy(md5);
    }

    我们看看IDA反汇编出来的结果

    PUSH    {R4,R5,LR}
    SUB     SP, SP, #0xC

    MOVS    R5, R0

    BLX     _ZN4CMD54NewLEv ; CMD5::NewL(void)
    MOVS    R4, R0

    BLX     _ZN12CleanupStack5PushLEP5CBase ; CleanupStack::PushL(CBase *)

    LDR     R3, [R4]
    MOV     R0, SP
    MOVS    R2, R5
    LDR     R3, [R3,#0x10]
    MOVS    R1, R4
    BLX     R3                              ;这里就是调用  md5->Hash()

    BLX     _ZN12CleanupStack13PopAndDestroyEv ; CleanupStack::PopAndDestroy(void)

    ADD     SP, SP, #0xC
    POP     {R4,R5,PC}

    类似地, 下面的这段代码,是从某个实际的应用程序中提取到的

                    LDR     R12, [R7,#4]    ; 载入md5对象
                    MOV     R0, R8
                     MOV     R2, R4
                     MOV     R1, R12
                     LDR     R3, [R12]       ; 读取虚函数表指针
                     MOV     LR, PC          ; 保存返回地址
                     LDR     PC, [R3,#0x10]  ; 调用hash的虚函数

  • 相关阅读:
    eyoucms遍历子栏目,有二级栏目的点击展开或者收缩
    eyoucms 遍历栏目下的子栏目
    帝国cms 内容页根据关键词来调用相关内容
    帝国cms 上传的图片前台不显示
    帝国cms 通过字段内容来获取数据
    eyoucms 去掉 index.php后缀
    通过jquery插件复制文字
    帝国cms 表单弹窗提交,判断后才能提交到后台
    动态库和静态库
    J-520-2018年第二届河北省大学生程序设计竞赛(快速幂取模)
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/2030925.html
Copyright © 2011-2022 走看看