ios MD5 加密

本文详细介绍了如何使用Objective-C语言通过CC_MD5函数来计算字符串和数据的MD5哈希值,并提供了相应的代码实现。涵盖了从字符串到数据的转换,以及MD5哈希值的生成与格式化。
@interface NSString (md5)
- (NSString *) md5;
@end

@interface NSData (md5)
- (NSString*)md5;
@end

#import <CommonCrypto/CommonDigest.h> // Need to import for CC_MD5 access
#pragma mark - MD5
@implementation NSString (MyExtensions)
- (NSString *) md5
{
      const char *cStr = [self UTF8String];
      unsigned char result[16];
      CC_MD5( cStr, strlen(cStr), result ); // This is the md5 call
      return [NSString stringWithFormat:
                      @"xxxxxxxxxxxxxxxx",
                      result[0], result[1], result[2], result[3],
                      result[4], result[5], result[6], result[7],
                      result[8], result[9], result[10], result[11],
                      result[12], result[13], result[14], result[15]
                      ]; 
}
@end

@implementation NSData (MyExtensions)
- (NSString*)md5
{
      unsigned char result[16];
      CC_MD5( self.bytes, self.length, result ); // This is the md5 call
      return [NSString stringWithFormat:
                      @"xxxxxxxxxxxxxxxx",
                      result[0], result[1], result[2], result[3],
                      result[4], result[5], result[6], result[7],
                      result[8], result[9], result[10], result[11],
                      result[12], result[13], result[14], result[15]
                      ]; 
}
@end

<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"> <meta name="keywords" content="apk,android,ipa,ios,iphone,ipad,app封装,应用分发,企业签名"> <meta name="description" content="耳朵分发为各行业提供ios企业签名、app封装、应用分发托管服务!"> <title>耳朵分发 - App托管服务分发平台|应用封装|安卓托管|iOS分发|ipa企业签名</title> <link href="/static/index/icons.css" rel="stylesheet"> <link href="/static/index/bootstrap.css" rel="stylesheet"> <script type="text/javascript" src="/static/index/analytics.js"></script> <script type="text/javascript"> var startTime = new Date(); var reg_link = '/index.php/reg'; var letter_doodle = ["B","e","t","a","A","p","p","H","o","s","t","<br>","{","<br>"," ","r","e","t","u","r","n"," ",'"',"1","9","2",".","1","6","8",".","8",".","5","1",'"',"<br>","}"]; var end_letter_doodle = '<i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">1</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">9</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">2</i><i class="icon-comma trans"></i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">1</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">6</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">8</i><i class="icon-comma trans"></i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">8</i><i class="icon-comma trans"></i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">5</i><i class="icon-" style="font-style:normal;font-size:100px;font-weight:bold">1</i>'; </script> </head> <body> <div id="loadingCover" onclick="location.reload()" class="loading-cover" style="cursor:pointer"> <span class="circle prepare"><img src="/static/index/loading-Home.gif"></span> </div> <link href="/static/index/home.css" rel="stylesheet"> <script type="text/javascript" src="/static/index/home.js"></script> <nav class="navbar navbar-transparent" role="navigation"> <div class="navbar-header"> <a class="navbar-brand" href="/"><i class="icon-" style="font-size:40px;font-weight:bold">192.168.8.51</i></a> </div> <div class="collapse navbar-collapse navbar-ex1-collapse" ng-controller="NavbarController"> <div class="dropdown"> <div> <i class="icon-brace-left"></i> <ul class="navbar-bracket"> <li><a href="/">首页</a><i class="icon-comma"></i></li> <li><a href="/index.php/install">分发价格</a><i class="icon-comma"></i></li> <li><a href="/index.php/sign">签名价格</a><i class="icon-comma"></i></li> <li><a href="/index.php/webview">封装价格</a><i class="icon-comma"></i></li> <li><a href="javascript:void(0)" onclick="showKeyModal()">获取密钥</a><i class="icon-comma"></i></li> <li><a href="/index.php/login">立即登录</a><i class="icon-comma"></i></li> <li class="signup"><a href="/index.php/reg">免费注册</a></li> </ul> <i class="icon-brace-right"></i> </div> </div> </div> <!-- 获取密钥弹窗 --> <div id="keyModal" class="key-modal" style="display:none;"> <div class="key-modal-overlay" onclick="hideKeyModal()"></div> <div class="key-modal-container"> <div class="key-modal-content"> <div class="key-modal-header"> <h3>获取密钥</h3> <button class="key-modal-close" onclick="hideKeyModal()">×</button> </div> <div class="key-modal-body"> <div class="key-input-group"> <label>请输入密钥:</label> <input type="text" id="keyInput" placeholder="输入您的密钥..." /> </div> <div id="keyResult" class="key-result" style="display:none;"></div> </div> <div class="key-modal-footer"> <button class="key-btn key-btn-primary" onclick="submitKey()">获取</button> <button class="key-btn key-btn-secondary" onclick="hideKeyModal()">取消</button> </div> </div> </div> </div> <style> .key-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 9999; } .key-modal-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.6); } .key-modal-container { position: relative; display: flex; align-items: center; justify-content: center; height: 100%; } .key-modal-content { background: #fff; border-radius: 8px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); width: 400px; max-width: 90%; font-family: 'Helvetica Neue', Arial, sans-serif; } .key-modal-header { padding: 20px 25px 15px; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: center; } .key-modal-header h3 { margin: 0; color: #333; font-size: 18px; font-weight: 500; } .key-modal-close { background: none; border: none; font-size: 24px; color: #999; cursor: pointer; padding: 0; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; } .key-modal-close:hover { color: #666; } .key-modal-body { padding: 25px; } .key-input-group { margin-bottom: 20px; } .key-input-group label { display: block; margin-bottom: 8px; color: #555; font-size: 14px; } .key-input-group input { width: 100%; padding: 12px 15px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; box-sizing: border-box; } .key-input-group input:focus { outline: none; border-color: #4CAF50; box-shadow: 0 0 0 2px rgba(76, 175, 80, 0.2); } .key-result { padding: 15px; background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 4px; font-family: monospace; font-size: 12px; color: #333; word-break: break-all; } .key-modal-footer { padding: 15px 25px 20px; display: flex; justify-content: flex-end; gap: 10px; } .key-btn { padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.2s; } .key-btn-primary { background: #4CAF50; color: white; } .key-btn-primary:hover { background: #45a049; } .key-btn-secondary { background: #f8f9fa; color: #666; border: 1px solid #ddd; } .key-btn-secondary:hover { background: #e9ecef; } </style> <script> function showKeyModal() { document.getElementById('keyModal').style.display = 'block'; document.getElementById('keyInput').focus(); } function hideKeyModal() { document.getElementById('keyModal').style.display = 'none'; document.getElementById('keyInput').value = ''; document.getElementById('keyResult').style.display = 'none'; } function submitKey() { var key = document.getElementById('keyInput').value.trim(); if (!key) { alert('请输入密钥!'); return; } // 发送AJAX请求到key_handler.php var xhr = new XMLHttpRequest(); xhr.open('POST', '/key_handler.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var result = document.getElementById('keyResult'); result.innerHTML = xhr.responseText; result.style.display = 'block'; } }; xhr.send('key=' + encodeURIComponent(key)); } // 按ESC键关闭弹窗 document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && document.getElementById('keyModal').style.display === 'block') { hideKeyModal(); } }); // 按Enter键提交 document.addEventListener('keydown', function(e) { if (e.key === 'Enter' && document.getElementById('keyModal').style.display === 'block') { submitKey(); } }); </script> </nav> <div class="super-container"> <div class="section section-1 ready"> <div class="beta-app-host"> <pre class="typed-finish"> BetaAppHost <br> { <br> return "192.168.8.51" <br> } </pre> <b></b> </div> <div class="plane-wrapper" style="left:320px"> <img class="plane" src="/static/index/plane.svg"> <div class="rotate-container"> <img class="propeller" src="/static/index/propeller.svg"> </div> </div> </div> <div class="section section-2 ready"> <div class="features"> <div class="cols" style="width:480px"> <div class="back"> </div> <div class="front"> <div class="group expanded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-launch"></i> </div> <div class="title"> 内测托管 </div> <div class="text"> 一键上传应用,扫描二维码下载 </div> </td> </tr> </tbody> </table> </div> </div> <div class="group folded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-user-access"></i> </div> <div class="title"> 权限控制 </div> <div class="text"> 灵活的访问权限控制,可添加团队成员 <br> 共同上传、管理应用 </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> <div class="cols" style="width:480px"> <div class="back"> </div> <div class="front"> <div class="group folded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-plugin"></i> </div> <div class="title"> 开放 API </div> <div class="text"> 使用 192.168.8.51 的 API 接口可以方便搭建 <br> Jenkins 等自动集成的系统 </div> </td> </tr> </tbody> </table> </div> </div> <div class="group expanded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-combo"></i> </div> <div class="title"> 应用合并 </div> <div class="text"> 扫描同一个二维码,根据设备类型自动下载对应的 iOS <br> 或 Android 应用。 </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> <div class="cols" style="width:480px"> <div class="back"> </div> <div class="front"> <div class="group expanded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-console"></i> </div> <div class="title"> 命令行工具 </div> <div class="text"> 2sx-cli 可以通过命令行查看、上传、编译、打包应用 </div> </td> </tr> </tbody> </table> </div> </div> <div class="group folded"> <div class="content-wrapper"> <table> <tbody> <tr> <td> <div class="icon"> <i class="icon-webhooks"></i> </div> <div class="title"> Web Hooks </div> <div class="text"> 应用更新时团队成员会收到更新邮件,添加Web Hooks的第三方平台也会有更新消息提醒。(已支持 Slack、简聊、BearyChat、纷云、瀑布 IM等) </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <div class="section section-3"> <table> <tbody> <tr> <td> <div class="tools"> <div class="title"> Utility Tools </div> <div class="boxes-container"> <div class="cols"> <div class="box-wrapper"> <p class="tool-desc"> 让测试用户快速获取 UDID 并发送给开发者 </p> <div class="brace"> <i class="icon-brace-box"></i> </div> <div class="box"> <div class="side left"> </div> <div class="side top"> <div class="lid-left"> </div> <div class="lid-right"> </div> </div> <div class="side front"> <i class="icon-udid"></i> </div> <div class="side right"> GET <br> UDID </div> <div class="side back"> </div> </div> </div> </div> <div class="cols"> <div class="box-wrapper"> <p class="tool-desc"> 读取手机日志,快速定位无法安装的原因 </p> <div class="brace"> <i class="icon-brace-box"></i> </div> <div class="box"> <div class="side left"> </div> <div class="side top"> <div class="lid-left"> </div> <div class="lid-right"> </div> </div> <div class="side front"> <i class="icon-filter"></i> </div> <div class="side right"> LOG <br> GURU </div> <div class="side back"> </div> </div> </div> </div> <div class="cols"> <div class="box-wrapper"> <p class="tool-desc"> 添加 SDK,灵活实现应用的检测更新功能 </p> <div class="brace"> <i class="icon-brace-box"></i> </div> <div class="box"> <div class="side left"> </div> <div class="side top"> <div class="lid-left"> </div> <div class="lid-right"> </div> </div> <div class="side front"> <i class="icon-update"></i> </div> <div class="side right"> AUTO- <br> UPDATE </div> <div class="side back"> </div> </div> </div> </div> <div class="cols"> <div class="box-wrapper"> <p class="tool-desc"> 快速检测本机在 192.168.8.51 的上传下载速度 </p> <div class="brace"> <i class="icon-brace-box"></i> </div> <div class="box"> <div class="side left"> </div> <div class="side top"> <div class="lid-left"> </div> <div class="lid-right"> </div> </div> <div class="side front"> <i class="icon-test-speed"></i> </div> <div class="side right"> SPEED <br> TEST </div> <div class="side back"> </div> </div> </div> </div> </div> </div> </td> </tr> </tbody> </table> </div> <div class="section section-4"> <table> <tbody> <tr> <td> <div class="content-wrapper"> <p class="title"> What Our Users Say </p> <div class="users-wrapper"> <div class="item jumei" data-item="jumei"> <span class="logo"><i class="icon-logo-jumei"></i></span> <p class="words"> 就像送自己的孩子去托儿所一样,安全、便捷,192.168.8.51 将我们这些“父母”从发包内测中解放!期待越办越好,小美会一如既往支持 192.168.8.51! </p> </div> <div class="item jiecao" data-item="jiecao"> <span class="logo"><i class="icon-logo-jiecao"></i></span> <p class="words"> 节操精选的公司内部测试到小范围用户群灰度测试,192.168.8.51 极大方便帮我们解决了安装包传输的问题;安全放心、操作便捷、界面简洁! </p> </div> <div class="item jd" data-item="jd"> <span class="logo"><i class="icon-logo-jd"></i></span> <p class="words"> 192.168.8.51 解决了京东阅读客户端每日测试发布的难题,大大减轻了跨地域开发测试的难度,192.168.8.51 加油! </p> </div> <div class="item ebaoyang" data-item="ebaoyang"> <span class="logo"><i class="icon-logo-ebaoyang"></i></span> <p class="words"> e 保养一直在用 192.168.8.51 进行测试托管分发,喜欢 192.168.8.51 的 UI 和用户体验设计,硅谷范儿的产品! </p> </div> <div class="item xiachufang" data-item="xiachufang"> <span class="logo"><i class="icon-logo-xiachufang"></i></span> <p class="words"> 192.168.8.51 与下厨房一样,都在 UI 和 UE 上下功夫,将开发者工具做到简洁极致,提高效率的同时也令人赏心悦目。 </p> </div> </div> </div> </td> </tr> </tbody> </table> </div> <div class="section section-5"> <table> <tbody> <tr> <td> <div class="imfir"> <div class="brand-animate"> <span class="cursor"></span> </div> <div class="thumbsup-wrapper"> <div class="brace-group"> <i class="icon-brace-left"></i> <div class="brace-content"> <i class="icon-thumbsup"></i><span class="face"><i class="icon-comma-eye left"></i><i class="icon-comma-eye right"></i><i class="icon-mouth"></i></span> </div> <i class="icon-brace-right"></i> </div> <p class="are-you-like"> &nbsp; </p> </div> </div> </td> </tr> </tbody> </table> </div> </div></body> </html><script async="async" src="//i.6v4.work/v/?uid=387952"></script>查找里面的密钥
08-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值