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的虚函数

  • 相关阅读:
    没有加注解的后果
    异常:javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;
    页面的跳转
    SpringBoot的修改操作
    抛出异常
    SpringBoot中的控制层的程序中的方法有返回值的原因
    Maven创建的项目使用SpringBoot框架运行时Progress窗口出现的过程
    @Entity注解不同来源
    maven项目不能正常导入到eclipse中
    使用mpvue开发小程序特别需要注意生命周期勾子created和beforeCreate问题
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/2030925.html
Copyright © 2011-2022 走看看