检查登录,取UserKey---几个函数

本文介绍了如何通过几个函数实现用户登录状态的检查、获取当前登录用户的UserID、获取当前用户的信息以及取得当前用户的UserKey。这些函数对于Web应用中用户身份验证及权限管理具有重要作用。

检查登录,取UserKey---几个函数

/// <summary>
        /// 检查是否登录
        /// </summary>
        /// <returns></returns>
        public static bool CheckLogin()
        {
            if(HttpContext.Current.Request.Cookies["dnt"] != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 取得当前登录用户的UserID
        /// </summary>
        /// <returns></returns>
        public static int GetUserId()
        {
            if(CheckLogin())
            {
                return Int32.Parse(ForumUtils.GetCookie("userid"));
            }
            else
            {
                return -1;
            }
        }

        /// <summary>
        /// 取当前用户的信息
        /// </summary>
        /// <returns></returns>
        public static UserInfo GetCurrentUser()
        {
            return UserFactory.GetUserInfo(GetUserId());
        }

        /// <summary>
        /// 取得当前用户的UserKey
        /// </summary>
        /// <returns></returns>
        public static string GetUserKey()
        {
            UserInfo _user = GetCurrentUser();
            if(_user != null)
            {
                return _user.Password.Substring(4,8);
            }
            else
            {
                return String.Empty;
            }
        }
 
function stego = LSB_Embed(coverImg, binData, userKey) % 参数验证 validateattributes(coverImg, {'uint8'}, {}, mfilename, 'Cover Image'); validateattributes(binData, {'char'}, {'vector'}, mfilename, 'Binary Data'); if nargin < 3, userKey = 'defaultKey'; end % 冗余参数配置 REDUNDANCY_FACTOR = 5; % 每个bit重复嵌入3次 expandedData = repelem(binData, REDUNDANCY_FACTOR); % 生成可复现的随机嵌入位置 [h, w, c] = size(coverImg); totalPixels = h * w * c; requiredBits = length(expandedData); % 容量检查 if requiredBits > totalPixels error('需要嵌入%d位,但最大容量为%d位 (冗余因子:%d)',... length(binData), floor(totalPixels/REDUNDANCY_FACTOR), REDUNDANCY_FACTOR); end % 生成随机嵌入序列 keyBytes = unicode2native(userKey, 'UTF-8'); userKey = char(keyBytes); % 转换回字符数组 seed = sum(double(userKey)); rng(seed); embedOrder = randperm(totalPixels, requiredBits); % 将图像展平处理 imgFlat = reshape(coverImg, 1, []); % 执行嵌入 for i = 1:requiredBits pixelIdx = embedOrder(i); bitValue = str2double(expandedData(i)); imgFlat(pixelIdx) = bitset(imgFlat(pixelIdx), 1, bitValue); end disp('嵌入位置示例:'); disp(embedOrder(1:10)); disp(['嵌入密钥原始值:' userKey]); disp(['嵌入密钥ASCII码:' num2str(double(userKey))]); disp(['计算种子值:' num2str(seed)]); % 重构图像 stego = reshape(imgFlat, h, w, c); end function binData = LSB_Extract(stegoImg, userKey, requiredBits) % 参数处理 if nargin < 2, userKey = 'defaultKey'; end if nargin < 3, requiredBits = inf; end % 冗余参数配置 REDUNDANCY_FACTOR = 5; % 生成相同随机序列 [h, w, c] = size(stegoImg); totalPixels = h * w * c; % 检查requiredBits是否超过总像素数 if requiredBits > totalPixels requiredBits = totalPixels; warning('requiredBits超出图像容量,已自动调整为%d', requiredBits); end keyBytes = unicode2native(userKey, 'UTF-8'); seed = sum(keyBytes); % 正确计算种子 rng(seed); embedOrder = randperm(totalPixels, requiredBits); % 现在requiredBits <= totalPixels % 提所有可能位 imgFlat = reshape(stegoImg, 1, []); extractedBits = arrayfun(@(idx) bitget(imgFlat(idx), 1), embedOrder); extractedBits = char(extractedBits + '0'); % 计算原始数据长度 maxOriginalBits = floor(length(extractedBits)/REDUNDANCY_FACTOR); originalData = blanks(maxOriginalBits); if length(extractedBits) < maxOriginalBits*REDUNDANCY_FACTOR error('提数据不足,可能由于图像尺寸不足或嵌入数据损坏'); end % 多数判决逻辑 for i = 1:maxOriginalBits startIdx = (i-1)*REDUNDANCY_FACTOR + 1; endIdx = min(i*REDUNDANCY_FACTOR, length(extractedBits)); bitsGroup = extractedBits(startIdx:endIdx); onesCount = sum(bitsGroup == '1'); originalData(i) = '0' + (onesCount > REDUNDANCY_FACTOR/2); end % 截断到指定长度 if requiredBits <= length(originalData) binData = originalData(1:requiredBits); else binData = originalData; end disp('提位置示例:'); disp(embedOrder(1:10)); disp(['提使用的密钥: ', userKey]); disp(['提种子值: ', num2str(seed)]); end确保实数输出,给出完整代码
03-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值