显示编译代码时长的demo

1.创建time.sh

 #!/bin/bash    
 start_time=$(date +"%s")
 $(echo command make) "$@" #注意:$@表示目标,就是编译要生成的可执行文件或image.

                           #这里调用make命令,执行./time.sh ramdisk,相当于执行:make ramdisk命令。也可以添加其他的命令:ls,cat...
 ret=$?
 end_time=$(date +"%s")
 tdiff=$(($end_time-$start_time))
 hours=$(($tdiff / 3600 ))
 mins=$((($tdiff % 3600) / 60))
 secs=$(($tdiff % 60))
echo
 if [ $ret -eq 0 ] ; then
     echo -n -e "#### make completed successfully "
 else
     echo -n -e "#### make failed to build some targets "
 fi
 
 if [ $hours -gt 0 ] ; then
     printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs
 elif [ $mins -gt 0 ] ; then
     printf "(%02g:%02g (mm:ss))" $mins $secs
     #elif [ $secs -gt 0 ] ; then
 else
     printf "(%s seconds)" $secs
 fi
 echo -e " ####"
 echo


3.执行命令

   # ./time.sh ramdisk

  即显示编译时长.


在生成加密密钥时,如果选择MD5算法,它是一种广泛使用的哈希函数,用于将任意长度的数据映射为固定长度的摘要(通常是128位)。C++自行实现MD5算法通常涉及以下几个步骤: 1. **理解原理**:MD5基于FIPS-180标准,包括初始化、处理块、轮变换和结束等过程。 2. **数据预处理**:将输入分块并填充到固定大小,以便能均匀处理。 3. **循环迭代**:执行4轮处理,每轮包含16轮子函数,每个子函数又包括三个独立的操作。 4. **轮函数**:涉及到异或(XOR)操作、移位(Shift)和非线性变换。 5. **状态变量**:维护四个128位的状态字,它们在每次迭代后会被更新。 6. **输出结果**:最后得到的128位哈希值作为加密密钥。 编写C++代码时,你需要定义相关的常量、状态变量和函数,比如`compress()`函数负责核心的轮变换。记得要包含必要的库文件,如`<cstring>`(用于字符串操作)和`<iomanip>`(格式化输出)。 ```cpp #include <cstring> #include <iomanip> // MD5状态字和轮函数细节... void md5Init(); void md5Update(const unsigned char* data, size_t len); void md5Final(unsigned char hash[16]); // 示例代码片段 void customMD5(const std::string& input) { md5Init(); md5Update(input.c_str(), input.size()); md5Final(hash); // 把计算出的hash存入hash数组 } int main() { // 使用自定义MD5函数 std::string keyData = "秘钥数据"; unsigned char hash[16]; customMD5(keyData); // 输出或存储密钥 for (size_t i = 0; i < sizeof(hash); ++i) { std::cout << std::hex << static_cast<int>(hash[i]) << " "; } return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android系统攻城狮

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值